我在这里要使python中的输入通道数等于过滤器尺寸的问题
我已经尝试过重塑,但是它给了我同样的错误..因为我是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(TimeDistributed(cnn_model, input_shape=(1,128, 128,3)))
model.add(LSTM(16, return_sequences=True, dropout=0.5))
model.add(Dense(1, activation='softmax'))
model.compile(optimizer='adadelta', loss='categorical_crossentropy', metrics=['accuracy'])
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”,第219行,在 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中的第751行 exception_prefix ='input')文件“ C:\ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ training_utils.py”, 第128行,位于standardize_input_data中 'with shape'+ str(data_shape))ValueError:检查输入时出错:预期的time_distributed_1_input具有5个维度,但得到了 形状为(2892,28,28,3)的数组
这是cnn_model摘要
答案 0 :(得分:1)
问题是您的cnn_model
已将信号的形状更改为具有3个颜色通道的128个通道,但是在声明model
的输入形状时没有考虑到这一点。
用cnn_model
检查cnn_model.summary()
的输出形状,并确保输入形状model
等于cnn_model
的输出形状。