【问题标题】:ValueError: Input 0 of layer sequential is incompatible with the layer. How do I fix the problem?ValueError: 层序的输入 0 与层不兼容。我该如何解决这个问题?
【发布时间】: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


【解决方案1】:

这行有问题

model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same',input_shape=[100, 100, 1]))

RGB 通道值的输入通道值应为 3 而不是 1。

将 input_shape 替换为

input_shape=[100, 100, 3]

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 2021-05-31
    • 1970-01-01
    • 2020-11-28
    • 2021-09-13
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多