CNN图像上色模型训练触发Incompatible shapes形状不匹配报错
图像上色CNN模型形状不匹配问题解决方案
报错提示模型输出形状为[3,256,256,2],标签形状为[3,150,150,2],二者不匹配导致损失计算失败,核心原因如下:
- 训练数据集
Xtrain的原始图像尺寸为150×150,你在模型定义时设置的输入尺寸为256×256,模型经过3次步长为2的下采样、3次2倍上采样后最终输出尺寸为256×256,和从Xtrain生成的150×150尺寸标签无法对齐 - 3次步长为2的下采样要求输入图像尺寸必须是8的倍数(2^3=8),150不是8的倍数,也会导致后续上采样无法还原到原始输入尺寸
解决方案
- 统一图像尺寸:将训练集中所有图像统一resize到256×256,保证
Xtrain的shape为(样本数, 256, 256, 3),这样生成的标签Y_batch尺寸自然为256×256 - 显式指定生成器输出尺寸:调用
datagen.flow时添加参数target_size=(256,256),避免生成器意外输出其他尺寸的图像 - 冗余代码清理:代码中重复定义了两次
datagen,可删除重复的定义段
验证方法
修改前可先运行以下代码确认问题:
# 查看训练集原始尺寸 print(Xtrain.shape) # 查看模型输出尺寸 print(model.output_shape) # 查看生成器输出的标签尺寸 test_x, test_y = next(image_a_b_gen(1)) print(test_y.shape)
确认三者尺寸一致后再启动训练即可解决报错。
内容的提问来源于stack exchange,提问作者Huda Alamoudi
相关产品推荐
相关产品推荐

