Index ソフト・ハード PyTorch | 構成・方式 |
transforms torchvision DataLoader カスタムDS datasets データセット 学習プログラム Tensor 機能・要件 タスク ライブラリ 導入 sample |
transforms ・データの前処理 画像に関する前処理はtorchvision.transformsにまとまっている。 CropやFlipなどの前処理が予め用意されている。・自前のtransformsを実装する場合の「Tutorial」 予め用意されているtransformsの動作に従い「コール可能なクラス」として実装する。 トランスフォームのパラメータを呼び出すたびに渡す必要がないように、 単純な関数ではなく呼び出し可能なクラスとして記述torchvision ・一般的なデータセット、モデルアーキテクチャ、画像変換など DataLoader ・DataLoaderはDatasetを制御、Datasetはtransformsを制御 ・トレーニング時に DataLoader を使ってデータとラベルをバッチサイズで取得する。 ・バッチサイズ分のtensor型に変換したデータを生成 データをシャッフルできる。・DataLoaderクラスをインスタンス化するときに、Datasetを引数で渡す。 ・参考 カスタム Dataset クラス library サンプル ・クラスには全データを参照するためのリストを保持 全画像へのパスからなるリストでもよい。 全画像を読み込んだ後の数値データでもよい。・三つの関数を実装 def __init__(self, ・・・): コンストラクタのオーバーライド(インスタンス化時に1回実行) 引数の処理 基本的に テンソル は Channel、Height、Width の三次元で考える。 def __len__(self): 全データの件数を出力 map-style Dataset、キー (通常はインデックス) を渡し、対応するデータを返す。 def __getitem__(self, idx): i 番目のデータへの問い合わせがある場合、i 番目のデータを返す。 特徴量だけ返してもよい。 特徴量と教師ラベルを同時に返してもよい。 map-style Datase・iterable-style Dataset (逐次データを返す。 ) __iter__()を実装datasets ・入力データとそれに対応するラベルを1組返す。 ・Datasetクラスをインスタンス化するときに、transformsを引数として渡す。 ・データはtransformsで前処理を行った後に返す。 ・有名なデータセットがあらかじめtorchvision.datasetsに定義されている。 MNIST/CIFAR/STL10など・扱うデータが画像でクラスごとにフォルダ分けされている場合 torchvision.datasets.ImageFolder クラスがある。データセット ・データセットのコードをモデル(ネット)のトレーニング用コードなどから分離 データサンプルを処理するためのコードは面倒で保守が難しい。・基本要素 torch.utils.data.DataLoader torch.utils.data.Dataset・使用するデータセット 独自のデータ sample datasets (事前にロード出来る FashionMNIST などのデータセット sample )学習プログラム全体図 (例、MNISTの再実装) ・必要なモジュールのインポート import torch・Datasetの定義 class MNISTDataset(Dataset) :・モデル(ネットワーク)の定義 ・train : 1エポック分の訓練を行う関数 ・test : テストを行う関数 ・main : 最初に実行される関数 if __name__ == '__main__': main() Tensor (torch.Tensor) ・Tensor(テンソル)型は、 計算グラフ を保持することができる変数 ・Tensor型 と ndarray型 の違い Tensor型はGPUでの演算が可能・テンソル作成 ・サイズ確認 ・乱数の生成 |
All Rights Reserved. Copyright (C) ITCL |