Keras不相容的形状

时间:2019-10-24 16:20:31

标签: python keras

我有一个具有以下方面的培训和测试集:

X_train.shape = (1,10767,11) and y_train.shape = (1,10767,3)

我正在尝试实现CNN以预测y_train。我的模型的架构如下:

model = keras.models.Sequential()

model.add(Conv1D(32, kernel_size=5, strides=2, activation='relu', input_shape= (None,11)))
model.add(Conv1D(64, kernel_size=2, strides=1, activation='relu'))       
model.add(Dense(64, activation='relu'))
model.add(Dense(3, activation='sigmoid'))   # Final Layer using Softmax
epochs = 10
lrate = 0.01
decay = lrate/epochs
sgd = SGD(lr=lrate,momentum=0.9,decay=decay, nesterov=False)
model.compile(loss='mean_squared_error', optimizer='sgd', metrics = ['mse'])

但是,当我使用fit时,在我的第一个纪元打印后,出现以下错误:

  

不兼容的形状:[1,5381,3]与[1,10767,3]

我尝试在最后一个密集层之前添加一个Flatten层,但是问题是形状没有完全定义,这使我将input_shape更改为(10767,11)。但是,在拟合的同时我仍然会收到错误:

  

预计density_99具有2维,但数组的形状为(1,10767,3)

这是我最后一个密集的图层。

如果我尝试减小输入形状和数据中的尺寸,它将表示它预期的尺寸为3,而我给出的尺寸为2。

1 个答案:

答案 0 :(得分:1)

我相信y_train数据形状存在问题。我将形状修改为:

y_train=np.ones((1,5381,3))

,但未收到错误。由于您在第一卷积层中的步幅为2,因此一维步数减少了整个网络2倍(减去5的内核大小)。我希望这会有所帮助。