我尝试定义一个在MNIST数据集上使用的简单架构,我开始定义我的架构如下:
model = Sequential()
model.add(Convolution2D(32,(3,3),activation='relu',input_shape = (1,28,28)));
在这一步中,我检查了我的网络:
model.output_shape
它给了我这个:
(None, -1, 26, 32)
有人可以向我解释负面维度(-1)的含义是什么?
答案 0 :(得分:2)
虽然直接使用张量时-1实际上可能是未知大小,但Keras图层不能像那样工作。 Keras中的未知批量大小为None
维度。
对于卷积,Keras使用channels_last
作为数据格式,因此您应将数据整形为(28,28,1)
,即(imageSide1,imageSide2,channels)
通过将数据整形为(1,28,28),卷积将认为第一个图像面是1个像素。通过操作删除2个像素,将导致-1。因此,将其塑造为(28,28,1)以获得(无,26,26,32)的输出。
或者,您可以将卷积层中的data_format
参数设置为channels_first
,或者甚至将keras.json
文件更改为channels_first
作为默认值。