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での演算が可能
 ・テンソル作成
 ・サイズ確認
 ・乱数の生成