CNN图像识别训练输入形状不匹配问题求助
问题排查与解决
核心原因
报错显示输入形状为(None, 65536),而模型期望(None, 256, 256, 1)。65536=256×256,说明你传入模型的验证集数据X_test被错误展平成了一维向量,而非保持四维的图像格式。你仅检查了X_train的形状,却忽略了X_test的形状验证。
解决步骤
检查并修正X_test的形状
先打印X_test的形状确认问题:print(X_test.shape)如果输出为
(样本数, 65536),将其reshape回四维格式:X_test = X_test.reshape(-1, 256, 256, 1)确保修正后X_test的形状为
(样本数, 256, 256, 1),与X_train保持一致。模型冗余层优化
你的模型中GlobalAveragePooling2D()之后的Flatten()属于冗余操作——GlobalAveragePooling2D已经将特征图压缩为一维向量(形状为(None, 32)),Flatten对其无任何作用,可删除该层减少不必要计算:# 优化后的代码片段 model.add(GlobalAveragePooling2D()) # 删除多余的Flatten()层 model.add(Dense(128,activation='relu'))
验证
完成上述修正后重新运行模型拟合代码,即可解决形状不匹配的问题。
内容的提问来源于stack exchange,提问作者Yihang
相关产品推荐
相关产品推荐

