1

假设您正在使用 Pytorch 优化器,例如 torch.optim.Adam(model_parameters)。

因此,在您的训练循环中,您将拥有以下内容:

optimizer = torch.optim.Adam(model_parameters)
# put the training loop here

loss.backward()
optimizer.step()
optimizer.zero()

有没有办法监控你的优化器正在采取哪些步骤?确保您不在平坦区域,因此由于渐变为空,因此不采取任何步骤。也许检查学习率将是一个解决方案?

4

1 回答 1

2

在这里回答自己。

最佳实践是(在 PyTorch 中)检查叶张量的梯度。如果渐变为 None 但 is_leaf 属性设置为 True,则显然有问题。

torch.nn.Parameters('insert your tensor here') 在这方面尤其令人困惑。因为需要将张量定义为 torch.nn.Parameters 才能成功更新。我建议不要使用 tensor.requires_grad_(True) ,因为它会混淆火炬。仅按上述方式设置参数。

于 2020-05-14T11:44:46.647 回答