こしあん
2019-06-24

PyTorchでDCGANやってみた

Pocket
LINEで送る


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結構楽しそう。

コード

Related Posts

SA-GANの実装から見る画像のSelf attention 自然言語処理でよく使われるSelf-attentionは画像処理においてもたびたび使われることがあります。自然言語処理のは出てきても、画像のはあまり情報が出てこなかったので、SAGANの実装から画像におけるSelf attentionを見ていきます。 SA-GAN Self attention...
Self-Attention Generative Adversarial Networks(SA-... SA-GAN(Self attention GAN)の論文を読んで実装したので、自分用メモとして書いておきます。 自分がやった実装の記事はこちら Self-attention GAN(SAGAN)を実装して遊んでみた https://blog.shikoan.com/sagan/ (普段こうい...
TPUで学習率減衰させる方法 TPUで学習率減衰したいが、TensorFlowのオプティマイザーを使うべきか、tf.kerasのオプティマイザーを使うべきか、あるいはKerasのオプティマイザーを使うべきか非常にややこしいことがあります。TPUで学習率を減衰させる方法を再現しました。 結論から TPU環境でtf.keras...
スタイル変換のStyle Lossとは何をやっているか... スタイル変換やImage to Imageの損失関数で使われる・Style Lossの実装を詳しく見ていきます。Style Lossの計算で用いているグラム行列の計算方法をTensorFlowで考えます。 Style Lossのやっていること 2つの画像の、VGG16や19(どっちを使うか、ど...
pipからインストールしたTorchVisionにImageNetがないときの対応... TorchVisionの公式ドキュメントにはImageNetが利用できるとの記述がありますが、pipからインストールするとImageNetのモジュール自体がないことがあります。TorchVisionにImageNetのモジュールを手動でインストールする方法を解説します。 発生状況 Pytho...
Pocket
Delicious にシェア

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です