【问题标题】:Loss is NaN with small changes in Data损失是 NaN,数据变化很小
【发布时间】:2022-10-23 02:41:54
【问题描述】:

在我的 PyTorch 项目中,我稍微编辑了我的数据,现在我得到了 loss.item() 的 nan 。使用旧数据,它仍在计算大量损失。

新数据

旧数据

有人能告诉我为什么会这样吗?

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    可能导致此问题的几件事:

    1. 学习率太大。尝试设置较小的学习率,看看是否能解决问题。
    2. 您需要标准化输入网络的数据。你可以试试 X = X - X.mean(axis=0)/X.std(axis=0) 或者由于数据看起来像一个 numpy 数组,因此选择在转换为张量之前使用 scikit-learn 对其进行预处理。示例:MinMaxScaler 1
    3. 尝试在您的网络中添加一个 batchnorm 层(例如:nn.BatchNorm1d),以进一步稳定层到层的输出。
    4. 检查数据中的异常值(如果存在极大值或 nan 值)并将其过滤掉。
    5. 可以通过设置torch.autograd.detect_anomaly(True)进行调试

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2021-11-28
      • 2021-07-18
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多