我正在尝试将数据放入conv2d + lstm层中,但最后一个密集层出现了错误
我已经尝试过重塑,但是它给了我同样的错误..因为我是python的新手,所以我不明白如何解决我的错误。我的模型是将cnn与lstm层结合在一起,我有2892个训练图像和测试1896张图像,总共4788张图像,每张图像尺寸为128 * 128
这是最终的模型摘要
这是我的一些代码
cnn_model = Sequential()
cnn_model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(128,128,3)))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Conv2D(32, (3, 3), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Conv2D(64, (3, 3), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Conv2D(128, (3, 3), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Flatten())
model = Sequential()
model.add(cnn_model)
model.add(Reshape((4608, 1)))
model.add(LSTM(16, return_sequences=True, dropout=0.5))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='adadelta', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
X_data = np.array(X_data)
X_datatest = np.array(X_datatest)
X_data= X_data.astype('float32') / 255.
X_datatest = X_datatest.astype('float32') / 255.
hist=model.fit(X_data, X_data,epochs=15,batch_size=128,verbose = 2,validation_data=(X_datatest, X_datatest))
我预期在密集层中的错误,因为它输出以下错误
回溯(最近通话最近):文件 “ C:\ Users \ bdyssm \ Desktop \ Master \ LSTMCNN2.py”,第212行,在 hist = model.fit(X_data,X_data,epochs = 15,batch_size = 128,verbose = 2,validation_data = {X_datatest,X_datatest))文件 “ C:\ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ training.py”, 线952,适合 batch_size =批处理大小)文件“ C:\ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ training.py”, _standardize_user_data中的第789行 exception_prefix ='target')文件“ C:\ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ training_utils.py”, 第128行,位于standardize_input_data中 '具有形状'+ str(data_shape))
ValueError:检查目标时出错:预期density_1具有3 尺寸,但数组的形状为(2892、128、128、3)
这是cnn_model摘要