码农知识堂 - 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 )。

  • 相关阅读:
    一文读懂区块链互操作性 - web3.0-区块链-元宇宙
    为何三层交换机下内网主机与内网服务器和外网主机均不通(相关搜索:软件设计)
    14 合并区间
    Restclient-cpp库介绍和实际应用:爬取www.sohu.com
    百度之星程序设计大赛
    公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用
    实验室建设案例 | 哈工大人工智能实验室建设及实训课程完美收官
    MySQL通过bin log日志恢复数据|手撕MySQL|对线面试官
    nginx网站服务
    Laravel 第七章 回复数据
  • 原文地址: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号