【发布时间】:2018-08-03 18:51:07
【问题描述】:
我正在阅读教程: https://www.datacamp.com/community/tutorials/generative-adversarial-networks
其中有一个名为generator 的网络具有以下架构:
generator = Sequential()
generator.add(Dense(256, input_dim=64, kernel_initializer=initializers.RandomNormal(stddev=0.02)))
generator.add(LeakyReLU(0.2))
generator.add(Dense(512))
generator.add(LeakyReLU(0.2))
generator.add(Dense(1024))
generator.add(LeakyReLU(0.2))
# last layer output a 28x28 image
generator.add(Dense(784, activation='tanh'))
generator.compile(loss='binary_crossentropy', optimizer=optimizer)
生成器的输入称为噪声,如下所示:
noise = np.random.normal(0, 1, size=[batch_size, input_dim])
print (noise.shape)
噪声的形状是:
noise shape: (128, 64)
所以我们有:
generated_images = generator.predict(noise)
让我困惑的是:生成器的input_dim在第一个Dense层中已经指定为64,为什么允许输入形状为(128,64)的噪声?
我理解这个想法是每次批量计算 128 个元素。我的问题是predict 的功能到底是什么? Keras 文档 (https://keras.io/models/sequential/) 有以下内容:
predict(x, batch_size=None, verbose=0, steps=None)
x: The input data, as a Numpy array (or list of Numpy arrays if the model has multiple inputs).
但是我们如何知道 x 中的哪个维度应该是 batch_size 以及 x 中的哪个维度应该是 input_dim?如果 noise shape = (64,128) 会发生什么?或(64, 256, 256) 或(256, 256, 64)?哪些是允许的?某处有隐藏文件吗?谢谢!
【问题讨论】:
标签: python-3.x tensorflow keras