Keras MLP训练报错Dimensions must be equal维度不匹配问题求解
问题根本原因
- 输出层维度和标签维度不匹配:你的回归任务每个样本对应2个预测目标,标签形状为
(样本数, 2),但输出层设置了10个神经元,导致模型输出形状为(batch_size, 10),和标签的(batch_size, 2)在计算均方误差时无法对齐,触发维度不匹配报错。 - 修改损失为列表形式无法解决问题:该报错属于模型结构和数据标签的维度适配问题,和损失的传入格式无关。
报错中出现的数值8为你设置的batch_size,对应每个训练步输入的样本数量。
解决方法
方案1:调整输出层维度(适配当前2维标签,优先级最高)
将最后一层全连接层的神经元数量修改为2,和标签维度对齐即可,示例修改代码:
# 原错误输出层 # Dense(10, activation='linear') # 修改后输出层 Dense(2, activation='linear')
方案2:调整标签维度(仅当你实际需要预测10个回归值时使用)
如果你的业务场景确实需要输出10个预测值,说明你当前的标签生成逻辑有误,需要重新处理训练/验证标签,将y_train_np、y_val_np的形状调整为(样本数, 10)。
修改完成后重新编译模型即可正常训练。
内容的提问来源于stack exchange,提问作者AhSoHard
相关产品推荐
相关产品推荐

