こしあん
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

TensorFlow/Kerasでネットワーク内でData Augmentationする方法... NumpyでData Augmentationするのが遅かったり、書くの面倒だったりすることありますよね。今回はNumpy(CPU)ではなく、ニューラルネットワーク側(GPU、TPU)でAugmetationをする方法を見ていきます。 こんなイメージ Numpy(CPU)でやる場合 Num...
SA-GANの実装から見る画像のSelf attention 自然言語処理でよく使われるSelf-attentionは画像処理においてもたびたび使われることがあります。自然言語処理のは出てきても、画像のはあまり情報が出てこなかったので、SAGANの実装から画像におけるSelf attentionを見ていきます。 SA-GAN Self attention...
Kerasで複数のラベル(出力)があるモデルを訓練する... Kerasで複数のラベル(出力)のあるモデルを訓練することを考えます。ここでの複数のラベルとは、あるラベルとそれに付随する情報が送られてきて、それを同時に損失関数で計算する例です。これを見ていきましょう。 問題設定 MNISTの分類で、ラベルが奇数のときだけ損失を評価し(categorical...
pix2pixを1から実装して白黒画像をカラー化してみた(PyTorch)... pix2pixによる白黒画像のカラー化を1から実装します。PyTorchで行います。かなり自然な色付けができました。pix2pixはGANの中でも理論が単純なのにくわえ、学習も比較的安定しているので結構おすすめです。 はじめに PyTorchでDCGANができたので、今回はpix2pixをやり...
PyTorchでのConvTranspose2dのパラメーター設定について... VAE(Variational Auto Encoder)やGAN(Generative Adversarial Network)などで用いられるデコーダーで畳み込みの逆処理(Convtranspose2d)を使うことがあります。このパラメーター設定についてハマったので解説します。 エンコーダ...
Pocket
Delicious にシェア

Add a Comment

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