深層学習用のフレームワークの一つである。用いることで、様々なニューラルネットワークを容易に構築できる。作成して、学習と検証を行う例を示す。二つのフォルダが得られる。フォルダの画像を使用する。つのカテゴリに分けられている。いずれかに分類するモデルを作成する。プログラムがわかるような形で記述する。これには以下のような手順を踏む。オブジェクトに保存する(ImageFolder)。畳み込みニューラルネットワークによる画像分類では、入力画像のサイズを揃える必要がある。ピクセルに揃えることにする(transforms.Resize)。行列データとして読み込まれた画像データをそのまま利用できないので、これをテンソル型に変換する(transforms.ToTensor)。整数によって記述されている。このままで学習を進めるには数値が多すぎて収束しにくいため、これらの数値を小さな数値に変換するための正規化を行う(transforms.Normalize)。画像フォルダの画像のなから数まいずつ取り出して、前処理を行い、学習可能な形で用意する(DataLoader)。枚ずつ読み込んで学習に回すことができるようになる。クラスを継承してニューラルネットワークの構造を定義する。出力層のような簡単なアーキテクチャを定義する。メソッドを使用してデータ配置の変換を行う。なっているためである。引数の数値は、畳み込み演算とプーリング演算を追跡すれば、正確に計算することができる。実行すると、それまでのデータ構造が出力される。用意ができ、ニューラルネットワークのアーキテクチャの定義もできた。ここからデータをネットワークに代入して学習を進める。学習を進めるとき、以下のような手順で行う。損失関数(CrossEntropyLoss)、重みの更新アルゴリズムおよび学習率(SGD(lr=0.01))を定義する。指定されたエポック数(n_epochs)だけ以下の計算を繰り返す。各ミニバッチに対して以下の計算を繰り返す。ネットワークに画像を代入して、予測結果を得る。予測結果と教師ラベル(フォルダ名)を比較して、損失を計算する。損失をネットワークの前方に伝播し、重みを更新する(backward)。訓練データで学習を済ませたモデルにテストデータを代入して検証する。テストデータも、訓練データと同様にミニバッチでテストできる。