当前位置: 首页 > news >正文

基础框架代码解释

自定义的,用法就是等于号后面的

out是自己定义的层啊

nn.ReLU()是构造了一个ReLU对象,并不是函数调用,而F.ReLU()是函数调用

这里大佬能说一下,为什么forward里面不能用nn.RELU()函数吗,我只知道是因为参数的问题,但不知道为什么

nn.ReLU不是一个函数,而是一个class

这里hidden(X)是Module父类下一个方法的变体,hidden(X)=hidden.call(X),表示把X作为输入传入该层

nn.ReLU是一个层结构,必须放在nn.Module中,F.relu是一个函数

回答前面:pytorch的这个nn.module不用自己定义后向,pytorch可以自己进行自动后向计算

不是得net.forward(X) 才算是调用forward函数吗 怎么直接net(X)也可以出来

这里net实例化MLP类后可以调用是因为MLP类继承了Moudle类中的__call__方法

这里为什么不是net.forwar(X)

这是python的一个语法糖,net()实际上调用net.call(),而__call__()调用了forward

看起来好象不符合python语法是因为,torch是个框架它有自己内部调用机制,你按它的要求填好空就行了

call__可以通过类名直接调用函数
net()继承Module类,而Module类的call会执行forword
通过内置函数__call
把实例化对象当成函数调用,但不知道为啥需要这么操作

这个类似于c++里面的函数重载,重载了()运算符,类似函数对象,也就是python里面的__call__()的作用

*args:接受不定数量的参数(参数就是层或者块)
调用父类的初始化函数
values,不是keys,keys是string

前面说的对,两个*才是dict
相当于block()调用了层里面的函数
关于为啥是字典形式;因为self._moudles是父类的属性,这个属性类型是OrderedDict()有序字典,这样添加层是将你的层嵌入到模型中,这也是为什么此处并没有重写forward函数
block是循环变量 block()是功能函数

关于为啥是字典形式;因为self._moudles是父类的属性,这个属性类型是OrderedDict()有序字典,这样添加层是将你的层嵌入到模型中,这也是为什么此处并没有重写forward函数

这里的意思是你可以自由的定义你想要的层不是让你复刻

forward在父类nn。module里面调用了,可以打开pycharm跟踪下就知道了

forward应该是在Module类里有调用,所以在class外的代码不需要显示地调用forward,但实际上运行了forward

因为父类nn.Module里重载了__call__,里面调用了forward

这里只是告诉各位,可以灵活的将各种块组合在一起,比如将刚刚定义的NestMLP、线性层以及之前定义的FixedHiddenMLP连在一起。

Sequential对象其实就是一个拿来装Linear (),ReLu()等方法(网络的层)的容器…
list of layers

权重是实例化出来的时候,模型默认初始化赋值的

*表示解包操作,将列表中的元素解包成多个参数传递给print()函数,使得打印的结果更加清晰易读。

解包操作符,一般对元组或列表使用,变为单独的元素。

1是relu,没有参数。02是两个全联接层

激活函数没有参数 取不出来

通过名字获取参数

字典 state_dict()[key]的效果和state_dict[key].data效果一样的吗
传一个字符串名字,指示add module对应的module
print一个网络,知道这个网络大概的架构

net.apply(function),for loop让每一个module调用function这个函数

API是高级程序接口,就是封装好的一个一个可以实现作用的直接调用的东西

为什么不能把weight初始化为常数

数值稳定性那节不是有讲么?要破坏初始化参数的对称性

全部初始化为同一个值,会导致:除输入层以外其它层的各个神经单元输入输出一样,状态梯度一样,从而权重的梯度更新也一样,等价于每层只有一个单元,

计算得到的梯度全都一样,最后所有权重都一样

Xavier

uniform distribution均匀分布

在《银河系漫游指南》小说中,有一个超级先进的文明为了寻找宇宙的终极答案,造了一台超级计算机,经过750万年的计算,最后超级计算机告诉他们终极答案就是“42”。

宇宙终极答案是“42”吗?我们都被“42”骗得好惨

计算机ASCII代码表里十六进制的42对应字符“*”(星号),换句话说,就是计算机里的通配符。所以42就是一切的意思,什么都可以代替。

apply函数的功能是将传入的函数应用到指定的module上,不只是初始化,做什么都行

“*[]”序列解包很细节,和.item()异曲同工

没听懂的建议看 pytorch基础,就那个龙良曲老师讲的,听完后再看这个,就会清楚很多

这个布尔表达式强转成float的意思,先判断是不是绝对值大于5,是就 1,不是就0

因为两个share是同一块内存
梯度肯定会更新,反正两个权重一起变
就是说他们的地址是一样的,所以一个改了,另外一个也跟着改

反向不需要考虑,因为这里的层不包含需要更新的参数
不会真的为0,十的负九次方,用很小的数值来表示
继承自Module的子类在创建实例的时候都会自动生成计算图
rand是从0-1的均匀分布中随机抽样,randn是从0-1的正态分布中抽样forward中定义的计算用的是不可反向传播的data,所以backward没结果的

nn.parameter加梯度加名字

实例化模型的命名而已dense,没错

dense应该特指全连接层。

MyLinear是一个类,dense是这个类的一个实例

为什么省去了dense.forward()

具体到后缀是.pt,.pth,.pkl,都对,不用细究,是Pytorch专用的格式

可以不带文件类型保存,你随便加后缀也可以,torch都可以save load

引号里面的就是你保存的位置,自定义就可以,建议不要有中文
state_dict得到字符串到parameters的映射

在别的地方薅羊毛训练网络经常要这么干

哪这里是不是 需要原来的网络模型也要知道,不然模型参数对不上!

是的,因为只保存了参数没有保存结构,你需要把原来的模型声明写出来

load_state_dict()这个函数是在哪定义了吗

好像可以,有两种save net的方式,这里是只存参数

此处是否通过eval()进入evaluation mode对结果并没有影响
应该是eval是设为评估模式,不计算梯度
train模式(net.train())和eval模式(net.eval())。一般的神经网络中,这两种模式是一样的,只有当模型中存在dropout和batchnorm的时候才有区别。

Y在前面面in[4]里面定义了,Y=net(X)

相关文章:

  • mybatis之主键返回
  • Spring Task使用介绍
  • 云ES容灾方案
  • 深度学习YOLOv5车辆颜色识别检测 - python opencv 计算机竞赛
  • 2023大厂高频面试题之CSS篇(2)
  • HotSpot 为什么要分为新生代和老年代?
  • 记录我常用的免费API接口
  • 微服务测试怎么做
  • vue3插槽的使用
  • Go 语言编译环境
  • 目标检测YOLO实战应用案例100讲-基于改进YOLO算法的加油站监控场景目标检测
  • 自建ES6.2.4切阿里云商业版ES(7.10)整体方案
  • 通俗理解信号量
  • (论文阅读30/100)Convolutional Pose Machines
  • Angular 路由无缝导航的实现与应用(六)
  • [case10]使用RSQL实现端到端的动态查询
  • angular2开源库收集
  • AngularJS指令开发(1)——参数详解
  • export和import的用法总结
  • java小心机(3)| 浅析finalize()
  • JDK 6和JDK 7中的substring()方法
  • PV统计优化设计
  • python学习笔记-类对象的信息
  • Rancher如何对接Ceph-RBD块存储
  • V4L2视频输入框架概述
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • XML已死 ?
  • Yeoman_Bower_Grunt
  • 编写符合Python风格的对象
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 搞机器学习要哪些技能
  • 简单数学运算程序(不定期更新)
  • 来,膜拜下android roadmap,强大的执行力
  • 前端学习笔记之观察者模式
  • 试着探索高并发下的系统架构面貌
  • 我从编程教室毕业
  • 线上 python http server profile 实践
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • $.proxy和$.extend
  • $jQuery 重写Alert样式方法
  • (1)(1.13) SiK无线电高级配置(六)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (区间dp) (经典例题) 石子合并
  • (三)uboot源码分析
  • (原)Matlab的svmtrain和svmclassify
  • (转)可以带来幸福的一本书
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)利用webkit抓取动态网页和链接
  • ***检测工具之RKHunter AIDE