Keras构建单输入单输出感知机模型触发输出键不匹配ValueError报错
报错原因
- 核心问题是输出层命名和编译阶段的损失配置键名不匹配:你给输出层Dense设置的
name参数是output1,但losses字典里的键写的是output_1,多了一个下划线,Keras做参数校验时无法将损失函数和对应输出层绑定,因此触发报错。 - 字典格式指定损失属于多输出模型的用法,你的模型是单输出场景,原本不需要用这种写法,这也是错误出现的潜在诱因。
解决方法
方案1:对齐命名
保持用字典传损失的写法,把losses的键修改为和输出层name一致的output1即可:
losses= { "output1": loss1, }
方案2:简化单输出配置(更推荐)
单输出场景直接传入损失函数即可,不需要套字典,从根源上避免命名不匹配问题:
# 无需定义losses字典,编译时直接传入损失函数对象 model.compile(loss=loss1, optimizer=optim, metrics=metrics)
内容的提问来源于stack exchange,提问作者Revi66
相关产品推荐
相关产品推荐

