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

复制Aurelien Geron《Hands-On ML》第10章代码损失值异常过高求解

损失远高于示例的核心原因及解决方案

最常见原因(90%以上概率)

你在Jupyter Notebook中没有按顺序执行所有代码单元格,跳过了输入特征标准化的步骤:
原始California Housing数据集的输入特征数值跨度极大(比如住户收入字段取值可达数万,房龄、房间数字段仅为个位数到数十),未经过StandardScaler标准化直接输入神经网络会触发梯度爆炸,初始损失直接达到1e16量级,和你跑出的日志特征完全吻合。

其他可能原因

  • 标签被意外放大:该数据集原始标签单位为10万美元,取值范围在0.15~5之间,如果你在处理数据时不小心将标签换算为美元为单位(放大1e5倍),MSE损失会直接放大1e10倍,也会出现损失过高的问题。
  • 随机种子未生效:部分旧版本TensorFlow在GPU训练模式下,设置的全局随机种子无法完全固定权重初始化,极端情况下初始权重过大也会导致损失爆炸,但该情况概率极低。

修复步骤

  1. 重启Jupyter Notebook内核,按顺序从头执行所有代码单元格,执行完标准化步骤后打印X_train[0],确认输出是均值为0、方差为1的小数值后,再运行模型训练代码。
  2. 打印y_train[:5],确认标签取值在0~5区间,没有被意外缩放。
  3. 如果上述操作后问题仍存在,可将SGD优化器的学习率调整为1e-4后重新训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:36:03