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中获得以下输出:
python - Tensorflow的GAN不适用于CIFAR-10-LMLPHP

以此为损失:

python - Tensorflow的GAN不适用于CIFAR-10-LMLPHP

每个时期之前和之后的其余输出都非常相似;大部分是白色图像,并且到处都是彩色像素。

如果有人要自己运行,请链接至完整的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

08-20 04:19