有没有办法监控优化器在 Pytorch 中的步骤?

Is there a way to monitor optimizer's step in Pytorch?

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

所以在你的训练循环中你会有类似的东西:

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

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

有没有办法监控优化器执行了哪些步骤?确保您不在平坦区域,因此由于梯度为空,因此不采取任何步骤。也许检查学习率是一种解决方案?

在这里回答我自己。

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

torch.nn.Parameters('insert your tensor here') 在这方面尤其令人困惑。 由于需要将 Tensor 定义为 torch.nn.Parameters 才能成功更新。 我建议不要使用 tensor.requires_grad_(True) 因为它会混淆火炬。只设置你的参数如上。