码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PyTorch - Sequential和ModuleList


    module.py

    Module Class,继承于torch.nn.Module

    • train()函数:train(mode=True),当前self.training=True,所有子模块children,都设置training=True

      • __init__,设置self.training参数,子类会使用training参数

      • Dropout源码,Dropout -> _DropoutNd -> Module、BatchNorm源码,都使用training模式

        • BN: Buffers are only updated if they are to be tracked and we are in training mode.
          
          • 1
      • super(_DropoutNd, self).__init__()

    • eval()函数:train(mode=Fale)

    • requires_grad_():当前模型的所有参数,module的函数,和parameter的函数,参数计算梯度

    • zero_grad():调用优化器的zero_grad(),将所有的参数的梯度都清0,避免梯度累积,优化器设置zero_grad,不需要调用模型

    • __repr__():魔法函数,string的表示,名称+模块描述

    • __dir__():attrs、parameters、modules、buffers、keys,返回所有键值

    module.py,Module Class的源码

    container.py

    • Container已经过期
    • Sequential(Module),有序的,直接传入Module的实例,或传入OrderedDict(),包含键值,最常用。
    • 或者传入键值,或者键值为默认idx递增序列
    s = torch.nn.Sequential(torch.nn.Linear(2,3), torch.nn.Linear(3,4))
    s._modules
    OrderedDict([('0', Linear(in_features=2, out_features=3, bias=True)),
                 ('1', Linear(in_features=3, out_features=4, bias=True))])
    
    • 1
    • 2
    • 3
    • 4
    • forward(),input输入module,输出input,循环连续处理input
    • ModuleList(Module),所有子module都放在list中,存放module的列表
    • 将modules添加到ModuleList中,insert或append函数,比list拥有更多的module父类的方法
    • ModuleDict(Module),可以通过key去访问不同的module,本身是一个dict,又是一个module,可以用于module的子module
    • ParameterList(Module),把parameter类型参数放入列表中,mm = matrix multiplication,矩阵乘法
    • ParameterDict(Module),同上
    • Module <-> Parameter,都是container,容器,List和Dict只有存放,没有forward功能,只有Sequential包含forward功能
  • 相关阅读:
    多目标差分进化算法(Matlab代码实现)
    docker commit 和docker build (实战使用以及区别)
    泰女网红变身外汇投资大师诈骗逾20亿,请警惕身边的“投资大师”
    react源码分析:实现react时间分片
    工业互联网安全概述
    前端技能树,面试复习第 44 天—— Vue 基础 | Vue 原理解析 | 双向数据绑定原理 | nextTick 原理
    cmmi3级和5级之间的区别是什么?
    9.4 链表删除指定节点(静态创建链表)
    MAC上设置IDEA如何一个窗口打开多个项目,多个tab
    ARM相关知识概括
  • 原文地址:https://blog.csdn.net/u012515223/article/details/125600280
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号