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 中的 Convolution2D
和 Conv2D
发生了一些变化?我 运行 2.2.4
有 Theano
后端
问题是它使用 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)
我正在学习 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 中的 Convolution2D
和 Conv2D
发生了一些变化?我 运行 2.2.4
有 Theano
后端
问题是它使用 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)