Keras搭建CNN时3D输入转4D格式适配Conv2D的问题咨询
错误原因
- 2D卷积层
Conv2D要求输入为4维张量,格式为(样本数, 高度, 宽度, 通道数),你当前reshape后的训练数据为3维(样本数, 特征长度, 1),缺少1个空间维度,不符合输入要求。 - 你给
Conv2D传入的input_shape参数包含了样本数维度,Keras的input_shape参数不需要指定样本数,仅需要传入单条样本的形状即可。 - 额外注意:你当前设置的卷积核尺寸
(2,2)和你的单条数据尺寸不匹配,调整维度后你的单条数据宽度只有1,小于卷积核宽度2,会触发新的尺寸不兼容错误。
修复方法
- 调整数据reshape逻辑,新增通道维度,把3维数据转为4维:
# 替换原有的reshape代码 X_train_reshaped = x_tra.reshape((x_tra.shape[0], x_tra.shape[1], 1, 1)) X_test_reshaped = x_tst.reshape((x_tst.shape[0], x_tst.shape[1], 1, 1))
- 修改
Conv2D层的input_shape参数,同时调整卷积核尺寸适配数据:
# 替换原有的Conv2D层代码 model.add(Conv2D(16, (2, 1), padding='valid', input_shape=X_train_reshaped.shape[1:], activation='relu'))
修改后即可正常运行。
内容的提问来源于stack exchange,提问作者فيصل عبد الله عزيز
相关产品推荐
相关产品推荐

