PyTorch学习——关于tensor、Variable、nn.Parameter()、叶子节点、非叶子节点、detach()函数、查看网络层参数

本文详细介绍了PyTorch中的tensor、Variable和nn.Parameter的区别,探讨了叶子节点与非叶子节点的概念,以及detach()函数的作用。还解释了在计算图中如何通过with torch.no_grad()避免计算梯度,并讨论了backward()操作后叶节点的梯度状态。最后,展示了如何查看网络层的参数。
摘要由CSDN通过智能技术生成

系列文章目录

pytorch优化器——add_param_group()介绍及示例、Yolov7 优化器代码示例
pytorch学习率设置——optimizer.param_groups、对不同层设置学习率、动态调整学习率
PyTorch学习——关于tensor、Variable、nn.Parameter()、叶子节点、非叶子节点、detach()函数、查看网络层参数
PyTorch model 返回函数总结——model.state_dict(),model.modules(),model.children(),model.parameters()
PyTorch模型参数初始化(weights_init)——torch.nn.init、加载预权重



tensor、Variable、nn.Parameter()

tensor(张量)能够更方便地在GPU上进行运算。
Variable是对Tensor的封装,为了引入计算图(自动求导),方便构建神经网络。Variable、tensor默认 requires_grad=False。
nn.Parameter()是pytorch中定义可学习参数的一种方法,可进行梯度求导,是将一个不可训练的类型Tensor转换成可以训练的类型,默认require_grad=True。

叶子节点和非叶子节点

关于叶子节点:
叶子节点可以理解成不依赖其他tensor的tensor。
只有叶子张量在反向传播的过程中才会将本身的grad传入backward()计算。
require_grad=True:

默认情况下,非叶子节点的梯度值在反向传播过程中使用完后就会被清除,不会被保留。 默认情况下,只有叶子节点的梯度值能够被保留下来。
被保留下来的叶子节点的梯度值会存入tensor的grad属性中,在
optimizer.step()过程中会更新叶子节点的data属性值,从而实现参数的更新。

1.首先requires_grad这个是看用户需求进行设定,如果为false则把你视为叶子节点。requires_grad=False,而is_leaf=True,则不计算该张量的grad
2.如果requires_grad=True and is_leaf=True,则计算该张量的grad,并且把计算得到的grad放到该张量的grad属性里面,
3. requires_grad=True and is_leaf=False, 不保留grad.
4. 如果是非叶子节点,也就是requires_grad=True and is_leaf=False,则可以通过retain_grad()来得到grad。

reaquires_grad=False的张量都是叶子张量;requires_grad=True的张量࿰

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chaoy6565

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值