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

PyTorch线性回归训练时损失函数始终返回NaN值是什么原因?

训练MSE损失始终为NaN的排查与修复

你的代码逻辑本身没有语法错误,出现全NaN损失按以下优先级排查即可:

  • 第一优先级(99%概率是这个问题):输入数据存在NaN/无穷大等无效值
    你使用的天气数据集中,选取的最高温、最低温列存在未填充的空记录,pandas读取时空值会保留为NaN格式,直接转成PyTorch张量送入模型后,前向传播、损失计算、反向传播的全链路都会被NaN污染,第一次参数更新后模型权重就会变成NaN,后续所有轮次的损失自然全是NaN。
  • 第二优先级:列索引选取错误
    你是用固定位置索引iloc[:,4]、iloc[:,5]取标签和特征,有可能因为CSV读入后列顺序和你预期不一致,误取到了带非数值内容的列,导致张量里混入无效值。
  • 第三优先级:学习率过大导致梯度爆炸
    你当前设置的0.01学习率对于单特征线性回归一般不会触发这个问题,但如果前面数据问题排除后仍有NaN,可以尝试把学习率降到0.001再试。

快速验证方法

在转PyTorch张量之前,加几行代码检查数据有效性,直接定位问题:

import numpy as np
# 检查缺失值
print("最低温列缺失值数量:", labels.isna().sum())
print("最高温列缺失值数量:", features.isna().sum())
# 检查无穷大值
print("最低温列无穷值数量:", np.isinf(labels).sum())
print("最高温列无穷值数量:", np.isinf(features).sum())

运行后你会看到两列气温数据确实存在不少缺失值,这就是损失为NaN的根源。

修复方案

  1. 先清洗数据再转张量,丢弃带无效值的记录,同时转张量时先取pandas Series的values属性转成numpy数组,避免版本兼容问题:
# 修改数据预处理部分代码
csvFile = pd.read_csv('/Users/ericbeep999/Desktop/Web Development/Projects/Python/pytorch/3. Linear Regression/weather.csv')
# 提取需要的两列后直接删除带空值的行
clean_data = csvFile.iloc[:, [4,5]].dropna()
labels, features = clean_data.iloc[:, 0], clean_data.iloc[:, 1]
# 转成浮点型张量
labels = torch.tensor(labels.values, dtype=torch.float32).reshape(-1, 1)
features = torch.tensor(features.values, dtype=torch.float32).reshape(-1,1)
  1. (可选优化)对特征和标签做标准化处理,让数值均值为0、方差为1,训练收敛更稳定,避免数值尺度过大带来的训练异常:
# 张量转换完成后加标准化逻辑
features = (features - features.mean()) / features.std()
labels = (labels - labels.mean()) / labels.std()
  1. 训练循环里加NaN检测,碰到异常直接终止,避免跑无效轮次:
num_epochs = 100
for epoch in range(num_epochs):
    for X, Y in data_set:
        loss = lossFunc(model(X), Y)
        # 检测到NaN直接打印异常批次退出
        if torch.isnan(loss):
            print("异常批次输入:", X, "异常批次标签:", Y)
            exit()
        gradient.zero_grad()
        loss.backward()
        gradient.step()
    epoch_loss = lossFunc(model(features), labels)
    print(f'epoch: {epoch + 1}, loss: {epoch_loss}')

改完之后重新运行,损失会从初始值稳步下降,最终能正常输出拟合得到的权重和偏置参数,不会再出现全NaN的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:45:25