原理分析
DCGAN 和GAN的原理是相同的,就是DCGAN和CNN结合,用CNN更有利于图形处理。
关于GAN的原理可以看一下这篇博客:GAN新手入门指南+keras&TensorFlow代码详解(WIN10)
然后我们可以具体看一下model实现:
实现生成器
这是最简单的Keras Sequnatial模型,我们可以发现他的输入为(None, 100)
,而输出则是(None, 28, 28, 1)
。看到28就知道这是一个关于生成手写数字的GAN模型。
def make_generator_model():
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(7 * 7 * 256, use_bias=False, input_shape=(100,)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.LeakyReLU())
model.add(tf.keras.layers.Reshape((7, 7, 256)))
assert model.output_shape == (None, 7, 7, 256) # Note: None is the batch size
model.add(tf.keras.layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False))
assert model.output_shape == (None