码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • torch.nn.parameter详解


    :---------------------------------------------------------------------------------------------------------------------:

        • 目录:
          • 参考:
          • 1、parameter基本解释:
          • 2、参数requires_grad的深入理解:
            • 2.1 Parameter级别的requires_grad
            • 2.2Module级别的requires_grad标志

    目录:

    参考:

    Parameter — PyTorch 1.12 documentation

    1、parameter基本解释:

    CLASS torch.nn.parameter.Parameter(data=None, requires_grad=True)
    """
    A kind of Tensor that is to be considered a module parameter.
    
    Parameters are Tensor subclasses, that have a very special property when used with Module s - when they’re assigned as Module attributes they are automatically added to the list of its parameters, and will appear e.g. in parameters() iterator. Assigning a Tensor doesn’t have such effect. This is because one might want to cache some temporary state, like last hidden state of the RNN, in the model. If there was no such class as Parameter, these temporaries would get registered too.
    
    data (Tensor) – parameter tensor.
    
    requires_grad (bool, optional) – if the parameter requires gradient. See Locally disabling gradient computation for more details. Default: True
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    torch.nn.parameter.Parameter 类用于Module里面自定义参数,当其作为Module的属性时,会自动添加到模型的参数列表中,可以通过parameters()迭代器读取:例如RNN的最后一个隐藏状态,Transfermor、VIT、GNN都会用到的。

    参数data:指的是Tensor

    参数requires_grad:指的是是否需要自动计算梯度(根据实际情况来定,如果需要学习的权重,需要自动计算梯度,如果不参与学习,只是作为保存变量则不需要自动计算梯度)

    2、参数requires_grad的深入理解:

    2.1 Parameter级别的requires_grad

    Autograd mechanics — PyTorch 1.12 documentation

    requires_grad参数和pytorch的自动计算梯度的机制有关。requires_grad是一个决定是否需要反向传播时候计算梯度的标志,如果True,则在前向传递期间,将节点记录在后向图中。在后向传递 (.backward()) 时只有 requires_grad=True 的叶张量才会将梯度累积到它们的 .grad 字段中。 注意:即使每个张量都有这个标志,设置它只对leaf tensors(没有 grad_fn 的张量,例如,nn.Module 的参数)有意义。很明显所有no leaf tensors(具有 grad_fn 的张量,与leaf tensors有关的后向图的张量)都会自动具有 require_grad=True,no leaf tensors计算梯度作为中间结果来计算叶tensors的 grad 。 设置 requires_grad 可以控制模型的哪些部分需要梯度计算。举个例子:

    例如,如果需要在模型微调期间冻结部分预训练模型。 要冻结模型的某些部分,只需将 .requires_grad(False) 应用于应用于不想更新的参数。如上所述,由于使用这些参数作为输入的计算不会记录在前向传递中,因此它们不会在后向传递中更新其 .grad 字段,因为它们不会成为第一个后向图的一部分节点。

    2.2Module级别的requires_grad标志

    根据需要,也可以使nn.Module.requires_grad() 在模块级别设置requires_grad。当应用于模块时, .requires_grad_() 会影响模块的所有参数(默认情况下 requires_grad=True )。

  • 相关阅读:
    docker 部署多个前端vue项目
    独家巨献!阿里专家兼Github贡献者业“大师级Dubbo实战笔记”入门到成神
    性能优化:线程快照获取与分析
    mysql 8.0.34 部署问题记录
    【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)
    java毕业生设计二手车交易市场网站计算机源码+系统+mysql+调试部署+lw
    校园二手物品交易系统微信小程序设计
    LeetCode【45】跳跃游戏2
    引用特定条件下的第一条数据
    继承关系中构造函数、析构函数的调用顺序详解
  • 原文地址:https://blog.csdn.net/KPer_Yang/article/details/126293681
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号