1. requires_grad,grad_fn,grad的含义及使用
requires_grad:
如果需要为张量计算梯度,则为True,否则为False。我们使用pytorch创建tensor时,可以指定requires_grad为True(默认为False)
grad_fn:
grad_fn用来记录变量是怎么来的,方便计算梯度,y = x*3,grad_fn记录了y由x计算的过程。
grad:
当执行完了backward()之后,通过x.grad查看x的梯度值。
2. python:torch.no_grad()的作用
说法1:
包装器“ with torch.no_grad()”将所有require_grad标志临时设置为false。
不希望PyTorch计算新定义的变量param的梯度(减少计算量),因为他只想更新它们的值。
说法2:
“with ”torch.no_grad()的使用就像一个循环,其中循环内的每个张量都将requires_grad设置为False。
这意味着当前与当前计算图相连的任何具有梯度的张量现在都与当前图分离。我们不再能够计算关于这个张量的梯度。
张量从当前图中分离,直到它在循环内。一旦它离开循环,如果张量是用梯度定义的,它就会再次附加到当前图。
代码:
def sgd(params, lr, batch_size):
"""小批量随机梯度下降"""
with torch.no_grad():
for param in params:
param -= lr * param.grad / batch_size
param.grad.zero_()
保证param原地数值改变操作下requires_grad=True不变。文章来源:https://www.toymoban.com/news/detail-584047.html
参考资料:
requires_grad,grad_fn,grad的含义及使用
测试torch.no_grad()的作用
pytorch中torch.no_grad有什么用?
PyTorch 中的“with torch no_grad”有什么作用?文章来源地址https://www.toymoban.com/news/detail-584047.html
到了这里,关于python:torch.no_grad()的作用 + requires_grad,grad_fn,grad的含义及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!