你的问题来自于image_ordering_dim
在keras.json
。
dim_ordering:{“ th”,“ tf”}中的一个。“ tf”模式表示图像应具有形状(样本,高度,宽度,通道),“ th”模式表示图像应具有形状(样本,通道,高度,宽度)。它默认为在?/ .keras / keras.json中的Keras配置文件中找到的image_dim_ordering值。如果您从未设置,则它将为“ tf”。
Keras将卷积操作映射到选定的后端(theano或tensorflow)。但是,两个后端对于尺寸的排序都做出了不同的选择。如果您的图像批次是具有C通道的HxW大小的N张图像,则theano使用NCHW排序,而张量流使用NHWC排序。
Keras允许您选择自己喜欢的顺序,并将进行转换以映射到后面的后端。但是,如果您选择image_ordering_dim="th"
它,则期望使用Theano样式排序(NCHW,您的代码中包含的那一种),如果image_ordering_dim="tf"
它期望张量流样式排序(NHWC)。
由于您image_ordering_dim
将设置为"tf"
,如果将数据重塑为张量流样式,则它应该可以工作:
X_train = X_train.reshape(X_train.shape[0], img_cols, img_rows, 1)
X_test = X_test.reshape(X_test.shape[0], img_cols, img_rows, 1)
和
input_shape=(img_cols, img_rows, 1)