torch.optim.Optimizer.zero_grad¶
- Optimizer.zero_grad(set_to_none=True)[source][source]¶
将所有被优化过的
torch.Tensor
的梯度归零。- 参数
set_to_none (bool) – 不将梯度设置为零,而是设置为 None。这通常会降低内存占用,并可以适度提升性能。但是,它会改变某些行为。例如:1. 当用户尝试访问梯度并对其执行手动操作时,None 属性或填充了 0 的 Tensor 会表现不同。2. 如果用户在调用
zero_grad(set_to_none=True)
后进行反向传播,则对于未接收到梯度的参数,.grad
s 保证为 None。3.torch.optim
优化器在梯度为 0 或 None 时行为不同(一种情况下它会使用 0 梯度执行步骤,另一种情况下它会完全跳过该步骤)。