在Convolution2D
的Keras文档中input_shape
一个128x128 RGB图片由input_shape=(3, 128, 128)
给出,因此我认为第一个组件应该是平面(或要素图层)的数量。
如果我运行以下代码:
model = Sequential()
model.add(Convolution2D(4, 5,5, border_mode='same', input_shape=(3, 19, 19), activation='relu'))
print(model.output_shape)
我得到output_shape
(None, 3, 19, 4)
,而在我的理解中,这应该是(None, 4, 19, 19)
,其中包含4个过滤器数。
这是keras文档示例中的错误还是我遗漏了什么?
(我正在尝试重新创建AlphaGo的一部分,因此19x19是与图像大小相对应的电路板尺寸。)
答案 0 :(得分:3)
您使用Theano维度排序(channels, rows, cols)
作为输入,但您的Keras似乎使用Tensorflow (rows, cols, channels)
。
因此,您可以直接在代码中切换到Theano维度排序:
import keras.backend as K
K.set_image_dim_ordering('th')
或者编辑keras.json
文件(通常在~\.keras
中)并切换
"image_dim_ordering": "tf"
至"image_dim_ordering": "th"
或者您可以保持Tensorflow维度排序并将input_shape
切换为(19,19,3)
答案 1 :(得分:2)
是的,应该是(无,4,19,19)。在keras中有一个叫dim_ordering
的东西决定了number of input channels
放置哪个索引。查看documentation中“dim_ordering”参数的文档。我的设置为'tf'。
因此;只需将input shape
更改为(19, 19, 3)
,就像这样
model.add(Convolution2D(4, 5,5, border_mode='same', input_shape=(19, 19,3), activation='relu'))
然后检查输出形状。
您也可以根据自己的喜好dim_ordering
修改文件中的~/.keras/keras.json