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

时间:2018-11-16 12:06:12

标签: python machine-learning keras theano convolution

我正在学习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.4后端运行Theano

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

问题在于它使用Theano作为后端,可能您正在使用tensorflow(您应该再次检查设置)。您可以使用以下方法进行更改:

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

这应该在导入keras

之前完成

答案 2 :(得分:0)

就像我在评论中写道。我的代码有误。因此,请注意,输入看起来形状很差,如果更改为input_shape=(28,28,1),则output_shape返回(None, 26, 26, 32)

我不知道这是否是您要寻找的东西。