我有一个具有以下方面的培训和测试集:
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。
答案 0 :(得分:1)
我相信y_train数据形状存在问题。我将形状修改为:
y_train=np.ones((1,5381,3))
,但未收到错误。由于您在第一卷积层中的步幅为2,因此一维步数减少了整个网络2倍(减去5的内核大小)。我希望这会有所帮助。