PyTorchでDCGANやってみた
PyTorchでDCGANをやってみました。MNISTとCIFAR-10、STL-10を動かしてみましたがかなり簡単にできました。訓練時間もそこまで長くはないので結構手軽に遊べます。
目次
はじめに
PyTorchでDCGANやってみました。コードはほとんどこの記事のコピペです。MNISTとCIFAR-10、STL-10でやってみました。コードは末尾にあります。
5ステップでできるPyTorch – DCGAN
https://qiita.com/hokuto_HIRANO/items/7381095aaee668513487
MNIST
結果だけ示します。MNISTから。
100エポック訓練させました。GPU2枚で10分程度ですね。エラーグラフ的にもう少し長く訓練すると綺麗になったかもしれません。
ちなみにMNISTをConvTransposeではなく、Upsampling+Conv2Dでやると、すぐDのロスが0近くなってうまく出力されなかったです(Dが強くなりすぎる)。MNISTではConvTrasnposeのほうがうまく行ったので、他の例でもConvTransposeを使っています。
CIFAR-10
300エポック訓練させました。こちらは1時間弱程度。それっぽいなにかができているような感じはします。
STL-10
STL-10のunlabeled-dataを300エポックほど。エポック間の画像の保存?データの再読み?に時間が時間がかかって、1エポック1分~1分半かかりました。実際GPUが動いている時間はその半分もないのになんだろう。
これは少しモデルの表現力が足りないのかもしれませんね。最後モード崩壊しているような気がしなくもない。
おわりに
PyTorchのDCGAN結構簡単でした。モデルのTraiableがどうとか意識しないでBackpropするかしないかで書ける、FakeとTrueの変数の入れ替えで同一の損失関数でできるのとかかなり簡単でした。PyTorchでのGAN結構楽しそう。
コード
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー