pytorch学习笔记——requires_grad

根据PyTorch的自动求导机制,如果一个tensor设置require_grad为True的情况下,才会对这个tensor以及由这个tensor计算出来的其他tensor求导,并将导数值存在tensor的grad属性中,便于优化器来更新参数。所以一般情况下,只有对训练过程的tensor设置require_grad为True,便于求导和更新参数。而验证过程只是检查当前模型的泛化能力,只需要求出loss,所以不需要根据val set的loss对参数进行更新,因此require_grad为False。具体的一些情况,可以看一下官方文档,或者到github上看一些有关的资料,都是可以的。

作者:zhFang1999
链接:https://www.zhihu.com/question/436410778/answer/1645941506
来源:知乎
比如 , ,如果把 的 requires_grad 设置为 True,单独执行一些类似于这样的 forward 操作是不会对最终结果有影响的。但会增加显存占用量(如果用 GPU 的话,用 CPU 会增加内存占用),因为整个计算图都会保留着。假设后面有个 backward 操作(比如 z.backward(),由于 backward 必须在实数上操作,这里假设 是一个实数),pytorch 会自动根据计算图反向计算梯度(只计算不更新)。当执行 optimizer.step() 操作时,计算图上的参数都会根据 backward 计算的梯度来更新。

作者:千千
链接:https://www.zhihu.com/question/436410778/answer/1646237528
来源:知乎
PyTorch 源码解读之 torch.autograd:梯度计算详解

修改tensor的requires_grad属性

x.requires_grad=False
x.requires_grad=True

Pytorch修改指定模块权重的方法,即 torch.Tensor.detach()和Tensor.requires_grad方法的用法

叶子节点和tensor的requires_grad参数

Variable和Tensor合并后,PyTorch的代码要怎么改?

一文搞透pytorch中的tensor、autograd、反向传播和计算图

你可能感兴趣的:(pytorch学习笔记,pytorch,深度学习)