Home About Contact
TensorFlow , GAN , MNIST

実践GAN に入門した

GANとは Generative Adversarial Network の略語、簡単に言うと贋作をつくるやつ。 例によって MNIST のデータセットを使う。

MNIST を使って cGAN( Conditional Generative Adversarial Network ) を使うと、 数字を指定して、その数字の贋作手描き数字画像をつくれるとのこと。

ここではまだ GAN / DCGAN を試しただけです。

GAN

一番基本的な GAN。Dense 層を使ったモデルにて訓練。

順にトレーニング回数が 1000 → 5000 → 15000 → 20000回:

1000 5000 15000 20000

DCGAN (Deep Convolutional)

モデルに CNN (Conv2D など) を使うもの。

順にトレーニング回数が 1000 → 5000 → 15000 → 20000回:

1000 5000 15000 20000

TensorFlow v2.13.0 を使用。

書籍 実践GAN のコードは TensorFlow v1 ベースの例なので、TensorFlow v2 で使う場合は注意が必要でした。

BatchNormalization を tensorflow.keras.layers.BatchNormalization ではなく、 TensorFlow v1 時代の tensorflow.compat.v1.keras.layers.BatchNormalization を使う必要がありました。

このページ( https://www.tensorflow.org/tutorials/generative/dcgan )を参考に TensorFlow v2 対応の記述に変更して試した結果。

順にトレーニング エポック数 1 → 15 → 30 → 50エポック目:

0001 0015 0030 0050

モデルは先程と変わらないので、結果は似たようなものです。 こちらのコードは、 サンプルとして生成させた画像 16個のシードを常に同じシード値を使っている関係で、 同じ位置には同じ数字が生成されている。このことによりエポックごとの変化が比較しやすい。