You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow Keras多分类模型训练loss为nan、准确率异常问题求助

代码存在两处核心问题,修复后即可正常训练:

1. 输入特征未做归一化,导致梯度爆炸,损失值变为nan

你当前使用的784维特征为MNIST像素原始值,取值范围是0~255,直接输入全连接层会让前向传播计算的数值过大,反向传播时梯度超出数值范围变成nan,最终损失输出为nan。
修复方法:构建数据集前对所有特征做归一化,将数值缩放到0~1区间:

X_train = X_train / 255.0
X_val = X_val / 255.0
X_test = X_test / 255.0

2. 准确率指标选择错误,导致输出准确率不符合预期

你使用的tf.keras.metrics.Accuracy()指标的计算逻辑是直接判断预测值和真实值是否完全相等,但你当前的真实标签是one-hot编码的10维向量,模型输出是10维概率向量,两者永远不可能完全相等,所以输出准确率始终接近0。
修复方法:改用适配one-hot标签的多分类准确率指标CategoricalAccuracy,修改compile部分代码即可:

model.compile(
    optimizer=tf.keras.optimizers.SGD(),
    loss=tf.keras.losses.CategoricalCrossentropy(),
    metrics=[tf.keras.metrics.CategoricalAccuracy()],
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:15:03