Pytorch中的tensor,requires_grad标志作用

torch.autograd是一个用于计算神经网络梯度的模块。在训练时,它构建DAG表示网络结构,通过backward()进行反向传播计算梯度。requires_grad标志决定tensor是否参与梯度计算,从而控制参数调整。冻结参数(requires_grad=False)可优化性能,常用于预训练模型的微调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

torch.autograd的简要介绍 - 【布客】PyTorch 中文翻译

参考官网中文文档的torch.autograd篇,这里更为详细,下文为简述。

简述:

神经网络在训练参数时,有正向传播和反向传播的过程,反向传播作用是计算参数的梯度。

requires_grad标志的作用就是决定这个tensor是否参与梯度计算,也就是是否允许被调参。

Pytorch中神经网络的架构:

在Pytorch中,整个神经网络被构建为一个有向无环图(DAG),类似于树结构(其中输入参数为叶子节点,最终输出为根节点)

DAG的一个优点就是可以进行流水化作业,可以极大的减少运行速度。

当损失函数进行backward(),也就是反向传播时,autograd会从根节点向叶子节点进行梯度运算,期间所有的节点也会参与运算(运算公式过略),而计算出的梯度会保存在.grad属性中并且逐层累加,最后保存在叶子节点的.grad中。

requires_grad作用:

我们首先认识用到,在tensor的初始化中:

如果你指定了requires_grad=True,意味着它加入了DAG中,也就是参与梯度运算。

如果你没有指定requires_grad,则默认为Flase,意味着它没有加入DAG中,也就是不计算梯度,这样的参数通常称为冻结参数

 如果事先知道您不需要这些参数的梯度,则“冻结”模型的一部分很有用(通过减少自动梯度计算,这会带来一些性能优势。

从 DAG 中排除很重要的另一个常见用例是调整预训练网络,比如采样,使得已经预训练的模型更加贴合当前你所做的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值