python-3.x - 有没有办法让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 总结
解决方案
问题是您cnn_model
已将信号的形状更改为 128 个通道而不是 3 个颜色通道,但在声明model
.
检查cnn_model
with的输出形状cnn_model.summary()
并确保输入形状model
等于 的输出形状cnn_model
。
推荐阅读
- c# - 在 C# 中按匹配日期 $ 或与 Mongodb 中的其他字段聚合
- c - 制作一个实现与数组一起使用的函数的程序
- c - 理解这个 shell 脚本分配
- graph - 图表组合每列和每行的标签
- python - 有什么方法可以计算 Dataframe.groupby 前五列的 mean() 吗?
- python - 具有默认值的 dict.get 的可读性
- android-asynctask - Android从ProgressDialog切换到ProgressBar,有很多活动的最佳实现?
- clojure - wrap-cors 中间件不适用于 system.components
- java - 索引越界 Java
- python - 仅在 pandas groupby 中包含前 N 次出现的辅助列