在Keras的Convolution2D
文档中,对于128×128的RGB图片,input_shape
被定义为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的一部分,所以19×19是棋盘大小,对应于图像大小。)
回答:
您使用的是Theano的维度顺序(channels, rows, cols)
作为输入,但您的Keras似乎使用的是TensorFlow的(rows, cols, channels)
。
因此,您可以直接在代码中切换到Theano的维度顺序,使用:
或者编辑keras.json
文件(通常位于~\.keras
),将
"image_dim_ordering": "tf"
更改为"image_dim_ordering": "th"
或者您可以保持TensorFlow的维度顺序,并将input_shape
更改为(19,19,3)