original tutorial GAN适用于默认的mnist数据集,但是当我尝试对其进行修改以与cifar10配合使用时,它会输出无意义的图像。
除了将生成器的尺寸从mnist的28x28更改为cifar10的32x32之外,我并没有做太多改变(除了跟踪用于图形显示的损失):
def make_generator_model():
model = tf.keras.Sequential()
model.add(layers.Dense(8*8*256, use_bias=False, input_shape=(100,)))
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU())
model.add(layers.Reshape((8, 8, 256)))
assert model.output_shape == (None, 8, 8, 256) # Note: None is the batch size
model.add(layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False))
assert model.output_shape == (None, 8, 8, 128)
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU())
model.add(layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same', use_bias=False))
assert model.output_shape == (None, 16, 16, 64)
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU())
model.add(layers.Conv2DTranspose(3, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh'))
assert model.output_shape == (None, 32, 32, 3)
return model
例如,我从修改后的教程GAN中获得以下输出:
以此为损失:
每个时期之前和之后的其余输出都非常相似;大部分是白色图像,并且到处都是彩色像素。
如果有人要自己运行,请链接至完整的modified tutorial notebook。
关于可以更改以使GAN输出可区分图像的任何想法?
最佳答案
我做了同样的事情,遇到了同样的问题。最后,我在这里找到了一个很棒的CIFAR-10 DCGAN教程:https://machinelearningmastery.com/how-to-develop-a-generative-adversarial-network-for-a-cifar-10-small-object-photographs-from-scratch/。我计划将其修改为像原始Tensorflow教程一样使用GradientTape并找到不同之处,但我也将其上传到kaggle,因此如果您认为自己可以做自己的实验:https://www.kaggle.com/laszlofazekas/cifar10-dcgan-example。