Python 3.x 有没有办法使python中输入通道的维数等于过滤器的维数?

Python 3.x 有没有办法使python中输入通道的维数等于过滤器的维数?,python-3.x,keras,lstm,Python 3.x,Keras,Lstm,这里的问题是,我想让python中输入通道的数量等于过滤器的维度 我已经尝试过重塑,但它给了我同样的错误。。因为我是python新手,所以我无法理解如何修复我的错误 我的模型是将cnn与lstm层相结合,我有2892张训练图像和1896张测试图像,总共4788张图像,每张图像大小为128*128 这里有一些我尝试过的代码 cnn_model = Sequential() cnn_model.add(Conv2D(32, (3, 3), activation='relu', input_shap

这里的问题是,我想让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\lstmcn2.py,第219行,在 hist=model.fitX\u数据,X\u数据,epochs=15,batch\u size=128,verbose=2,validation\u data=X\u datatest,X\u datatest文件 C:\Users\bdyssm\AppData\Local\Programs\Python\35\lib\site packages\keras\engine\training.py, 第952行,合适的 batch\u size=batch\u size文件C:\Users\bdyssm\AppData\Local\Programs\Python35\lib\site packages\keras\engine\training.py, 第751行,标准化用户数据 异常\u prefix='input'文件C:\Users\bdyssm\AppData\Local\Programs\Python\Python35\lib\site packages\keras\engine\training\u utils.py, 第128行,标准化\u输入\u数据 “带形状”+strdata\u形状值错误:检查输入时出错:预期时间\u分布\u 1\u输入有5个维度,但得到 形状为2892,28,28,3的阵列

这是模型摘要

这是cnn_的模型摘要

问题是,您的cnn_模型已将信号的形状更改为128个通道,而不是3个颜色通道,但在声明模型的输入形状时,您没有考虑到这一点


使用cnn_模型检查cnn_模型的输出形状。总结并确保模型的输入形状等于cnn_模型的输出形状。

不幸的是,这对我没有帮助。。因为我知道你提到的问题,但我找不到解决方案,也找不到如何在python代码中修复它,因为我是在深度学习中编写python代码的新手,一旦你发布了cnn_model.summary的输出,我可能能够帮到furhter。基于此,line model.addTimeDistributedcnn_model,input_shape=None,16128,128,3将更改为model.addTimeDistributedcnn_model,input_shape=None,X,Y,128。你说X和Y是什么意思?我已经用摘要编辑了这个问题,并将input_shape更改为input_shape=1128,128,3。。但是我得到了另一个错误值error:error when check input:expected time_distributed_1_input有5个维度,但得到了形状为2892、28、28、3的数组请为cnn_模型添加摘要