我正在阅读以下教程:
https://www.datacamp.com/community/tutorials/generative-adversarial-networks
其中有一个名为
生成器的输入被称为“噪声”,如下所示:
噪音的形状是:
这是我困惑的地方:生成器的
我理解的想法是每次在批处理中计算128个元素。我的问题是
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
,哪个维度应该是input_dim
?如果noise shape = (64,128)
,或者(64, 256, 256)
,或者(256, 256, 64)
会发生什么?哪些是允许的?是否有隐藏的文档?谢谢!
input_shape
从不期望批量大小。如果您想要的话,可以通过额外的batch_size
参数指定批量大小。对于功能API也是同样的道理:shape
从不期望批量形状,而是batch_shape
。 - sdcbr(128, 64)
,这意味着有128个示例,每个示例包含64个输入。实际上model.predict()
具有名为batch_size
的参数,默认值为32。调用predict()
时,模型将使用大小为(32, 64)
的4个批次来处理数据。示例的数量并不重要。您可以传递一个形状为(500, 64)
的数组,它仍然可以工作。 - sdcbr