【问题标题】:Convolution2D gives wrong output shape in KerasConvolution2D 在 Keras 中给出错误的输出形状
【发布时间】:2018-11-16 12:06:11
【问题描述】:

我正在学习来自 here 的教程并坚持使用简单的模型创建

model = Sequential()
model.add(Convolution2D(32, kernel_size=(3, 3), activation='relu', input_shape=(1, 28, 28)))
model.output_shape

这应该给出(None, 32, 26, 26) 输出,但我得到(None, -1, 26, 32)。我猜提供的参数有问题,或者我需要进行额外的重塑。也许 Keras 中的 Convolution2DConv2D 发生了一些变化?我正在运行 2.2.4Theano 后端

【问题讨论】:

  • 您的代码出现 InvalidArgumentError。
  • @Tzomas 检查你正在运行的 keras 版本,可能你有旧版本

标签: python machine-learning keras theano convolution


【解决方案1】:

通道似乎位于输入数据的第一轴。因此,您需要将data_format 参数设置为"channels_first"

model = Sequential()
model.add(Convolution2D(32, kernel_size=(3, 3),
                        data_format='channels_first',
                        activation='relu', input_shape=(1, 28, 28)))
model.output_shape

这给出了:

(None, 32, 26, 26)

【讨论】:

    【解决方案2】:

    问题在于它使用 Theano 作为后端,并且您可能正在使用 tensorflow(您应该再次检查您的设置)。你可以改变它:

    import os
    os.environ['KERAS_BACKEND'] = 'theano'
    

    这应该在导入keras之前完成

    【讨论】:

      【解决方案3】:

      就像我在评论中写的那样。我的代码有错误。所以看看你输入的形状看起来很糟糕,如果你更改为input_shape=(28,28,1),那么 output_shape 返回(None, 26, 26, 32)

      我不知道这是否正是您要寻找的。​​p>

      【讨论】:

        猜你喜欢
        • 2017-05-25
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-15
        • 1970-01-01
        • 2017-11-03
        • 2020-03-24
        • 2019-05-07
        相关资源
        最近更新 更多