You need to enable JavaScript to run this app. Keras多输出LSTM训练为何有3个损失值却仅2个准确率值及含义
优惠活动
大模型
产品
解决方案
定价
更多

Keras多输出LSTM训练为何有3个损失值却仅2个准确率值及含义

多输出LSTM训练日志指标解析

1. 训练阶段对应指标字段

直接对应训练集维度的指标字段如下:

  • 训练总损失值:loss
  • 各分支单独的训练损失:activation_26_loss(ReLU输出分支损失)、lstm_151_loss(LSTM细胞状态输出分支损失)
  • 各分支单独的训练准确率:activation_26_accuracy(ReLU输出分支准确率)、lstm_151_accuracy(LSTM细胞状态输出分支准确率)

所有带val_前缀的字段,均为验证集上对应同维度的计算值,和训练集字段一一匹配。

2. 指标数量差异与各指标具体含义

为什么会有3个损失值

Keras对多输出模型的损失计算有固定逻辑,你在编译模型时设置loss='mse'且没有单独给每个输出分支指定专属损失、损失权重时,会自动生成三类损失日志:

  • 两个分支专属的单损失:模型一共设置了2个输出,Keras会对每个输出单独执行一次损失计算,对应生成两个分支的损失条目:
    • activation_26_loss:ReLU激活层的输出(也就是Dense层接ReLU的预测分支)和训练标签做MSE计算得到的单分支损失
    • lstm_151_loss:LSTM返回的细胞状态(即代码里的state_c,作为第二个输出分支)和训练标签做MSE计算得到的单分支损失
  • 全局汇总的总损失:loss是把所有单分支损失按默认权重(未自定义权重时,每个分支的权重都为1)求和得到的最终优化目标值。从你提供的Epoch 1数值可以直接验证这个计算关系:0.1153(ReLU分支损失) + 0.1185(LSTM分支损失) = 0.2338,和日志里打印的总损失数值完全相等。

为什么只有2个准确率值

你在编译时设置的metrics=['accuracy']的计算逻辑和损失不同:

  • Keras会对每个输出分支单独计算一次accuracy指标,2个输出自然对应2个准确率日志,也就是我们看到的activation_26_accuracy和lstm_151_accuracy,分别对应两个输出分支独立计算的准确率结果。
  • Keras默认只会自动生成“所有分支损失求和”的总损失日志,但不会对逐分支的评估指标(比如accuracy)做全局汇总计算,因此不会生成一个总的准确率字段,最终日志里也就只会出现2个准确率值。

补充提示:你当前的两个输出分支本质是回归任务(配置的是MSE损失),但Keras自动计算的accuracy是按分类任务逻辑执行的——只有预测值和标签完全相等才算预测正确,和回归任务的评估逻辑完全不匹配,这也是日志里两个准确率长期显示为0的核心原因。


内容的提问来源于stack exchange,提问作者olo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 08:15:01