Convolution2D 在 Keras 中给出了错误的输出形状

Convolution2D gives wrong output shape in Keras

我正在学习 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 后端

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

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

这应该在导入之前完成 keras

好吧,就像我在评论中写的那样。我收到你的代码错误。因此,如果您更改为 input_shape=(28,28,1) 然后 output_shape returns (None, 26, 26, 32)

,那么您会发现输入的形状看起来很糟糕

我不知道这是否正是您要找的。

通道似乎在输入数据的第一个轴上。因此,您需要将 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)