input_shape keras

时间:2017-03-13 16:11:09

标签: machine-learning keras

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是与图像大小相对应的电路板尺寸。)

2 个答案:

答案 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