首页 > 解决方案 > 有没有办法让python中的输入通道等于过滤器的维度?

问题描述

我的问题是我想让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))

尝试previuos代码时出现以下错误

回溯(最后一次调用):文件“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 =batch_size) 文件“C:\Users\bdyssm\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\engine\training.py”,第 751 行,_standardize_user_data 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: Error检查输入时:预期 time_distributed_1_input 有 5 个维度,但得到了形状为 (2892, 28, 28, 3) 的数组

这是模型摘要 在此处输入图像描述

这是 cnn_model 总结

在此处输入图像描述

标签: python-3.xkeraslstm

解决方案


问题是您cnn_model已将信号的形状更改为 128 个通道而不是 3 个颜色通道,但在声明model.

检查cnn_modelwith的输出形状cnn_model.summary()并确保输入形状model等于 的输出形状cnn_model


推荐阅读