#疑問点
torchvisionライブラリにはデータセットを読み込む関数が用意されていて,transformという引数を指定することで簡単にデータ拡張が行える.以下はcifar-10のデータセットを読み込む関数.
import torchvision
torchvision.datasets.CIFAR10(root, train, transform, target_transform, download)
しかし,データ拡張と言ってもデータローダーに渡されるデータ数は増えない.勘違いも相まって地味にここで30分くらい悩んだ.
#今のところの理解
(ライブラリのコードを読んで解釈しているだけなので間違えているかもしれません.よろしくお願いします.)
torchvision.datasets.CIFAR10()の中身を読んでみると,__getitem__()の内部でtransform関数を呼び出していた.
どうやら,初期化時点でデータ拡張をしてデータ数を水増ししている訳ではなく,データローダーからデータを取り出す時にデータがtransformされて与えられるということらしい.
つまり,データ拡張といっても,
1epochで学習する画像枚数は変わらず,各epochでデータローダーが渡してくるデータがtransformされているだけ
のようである.
(データ拡張とかいう名称がややこしくしている気がする)
データ数を水増しして,そのデータで単に学習を回すと思っていましたが,各epochでは同じ画像からtransformされた画像は使わないみたいですね.