Lp8*_*194 7 deep-learning pytorch
我正在尝试训练深度学习架构,模型训练得非常完美。我在每个纪元后进行测试。对于 7 epoch,所有损失和准确性似乎都不错,但在测试期间的 8 epoch,测试损失变为 nan。我检查了我的数据,没有nan。而且我的测试准确度比火车高,这很奇怪。训练数据大小为 37646,测试数据大小为 18932,所以应该足够了。在成为 nan 测试之前,开始变得非常高,约为 1.6513713663602217e+30。这真的很奇怪,我不明白为什么会发生。非常感谢任何帮助或建议。
假设非常高的学习率不是问题的原因,您可以在更新之前使用 PyTorch 的gradient clipping.
例子:
optimizer.zero_grad()
loss, hidden = model(data, hidden, targets)
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), clip_value)
optimizer.step()
Run Code Online (Sandbox Code Playgroud)
这是当你有 NaN 损失时要做的第一件事,当然,如果你已经确定你在其他地方没有 NaN,例如在你的输入特征中。在增加学习率导致 NaN 的情况下,我使用了梯度裁剪,但仍然想测试更高的学习率。降低学习率也可以解决你的问题,但我猜你已经尝试过这个。
根据经验,我设置了clip_value = 5大部分时间,然后查看其对性能的影响(通常不显着)。请随意尝试不同的值。
| 归档时间: |
|
| 查看次数: |
14741 次 |
| 最近记录: |