【发布时间】:2021-06-21 11:35:59
【问题描述】:
我有自己的数据集,由大小为 100x100 的图像组成,而不是通常的 28x28(在 MNIST 中)。我正在尝试从我的数据集上的 tensorflow 主页运行 DCGAN 的代码,但我失败了。
我知道问题与尺寸有关,如果有人可以解释缺少的内容,我将不胜感激。我读过生成器的输出必须与鉴别器的输入相匹配,但我不知道如何做到这一点。如果有人可以解释我必须调整的内容,将不胜感激?
这是鉴别器的代码:
def make_discriminator_model():
model = tf.keras.Sequential()
model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same',input_shape=[100, 100, 1]))
model.add(layers.LeakyReLU())
model.add(layers.Dropout(0.3))
model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same'))
model.add(layers.LeakyReLU())
model.add(layers.Dropout(0.3))
model.add(layers.Flatten())
model.add(layers.Dense(1))
return model
这是生成器的代码
def make_generator_model():
model = tf.keras.Sequential()
model.add(layers.Dense(25*25*256, use_bias=False, input_shape=(100,)))
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU())
model.add(layers.Reshape((25, 25, 256)))
assert model.output_shape == (None, 25, 25, 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, 25, 25, 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, 50, 50, 64)
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU())
model.add(layers.Conv2DTranspose(1, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh'))
assert model.output_shape == (None, 100, 100, 1)
return model
我收到的错误是“ValueError:层顺序的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 4,但接收到形状为 [100, 100] 的输入”。
【问题讨论】:
-
您能与我们分享完整的代码,或者至少是产生该错误的代码吗?
-
@ĐinhAnhVũ 是的。我应该把它放在哪里?
-
在您的问题中,当然还是指向它的链接
标签: python tensorflow keras deep-learning