Pytorch中的forward的理解
文章目录
- 写在前面
- 正文
- 为什么都用def forward,而不改个名字?
- forward有什么特殊功能?
- 第一条:.forward()可以不写
- 第二条:优先运行forward方法
- 总结
写在前面
以下是本人根据Pytorch学习过程中总结出的经验,如果有错误,请指正。
正文
为什么都用def forward,而不改个名字?
在Pytorch建立神经元网络模型的时候,经常用到forward方法,表示在建立模型后,进行神经元网络的前向传播。说的直白点,forward就是专门用来计算给定输入,得到神经元网络输出的方法。
在代码实现中,也是用def forward
来写forward前向传播的方法,我原来以为这是一种约定熟成的名字,也可以换成任意一个自己喜欢的名字。
但是看的多了之后发现并非如此:Pytorch对于forward方法赋予了一些特殊“功能”
(这里不禁再吐槽,一些看起来挺厉害的Pytorch“大神”,居然不知道这个。。。只能草草解释一下:“就是这样的。。。”)
forward有什么特殊功能?
第一条:.forward()可以不写
我最开始发现forward()的与众不同之处就是在此,首先举个例子:
import torch.nn as nn
class test(nn.Module):def __init__(self, input):super(test,self).__init__()self.input = inputdef forward(self,x):return self.input * xT = test(8)
print(T(6))# print(T.forward(6))
--------------------------运行结果-------------------------
D:\Users\Lenovo\anaconda3\python.exe C:/Users/Lenovo/Desktop/DL/pythonProject/tt.py
48Process finished with exit code 0
可以发现,T(6)是可以输出的!而且不用指定,默认了调用forward方法
。当然如果非要写上.forward()这也是可以正常运行的,和不写是一样的。
如果不调用Pytorch(正常的Python语法规则),这样肯定会报错的
# import torch.nn as nn #不再调用torch
class test():def __init__(self, input):self.input = inputdef forward(self,x):return self.input * xT = test(8)
print(T.forward(6))
print("************************")
print(T(6))
--------------------------运行结果-------------------------
D:\Users\Lenovo\anaconda3\python.exe C:/Users/Lenovo/Desktop/DL/pythonProject/tt.py
48
************************
Traceback (most recent call last):File "C:\Users\Lenovo\Desktop\DL\pythonProject\tt.py", line 77, in <module>print(T(6))
TypeError: 'test' object is not callableProcess finished with exit code 1
这里会报:‘test’ object is not callable
因为class不能被直接调用,不知道你想调用哪个方法。
第二条:优先运行forward方法
如果在class中再增加一个方法:
import torch.nn as nn
class test(nn.Module):def __init__(self, input):super(test,self).__init__()self.input = inputdef byten(self):return self.input * 10def forward(self,x):return self.input * xT = test(8)
print(T(6))
print(T.byten())
--------------------------运行结果-------------------------
D:\Users\Lenovo\anaconda3\python.exe C:/Users/Lenovo/Desktop/DL/pythonProject/tt.py
48
80Process finished with exit code 0
可以见到,在class中有多个method的时候,如果不指定method,forward是会被优先执行的。
总结
在Pytorch中,forward方法是一个特殊的方法,被专门用来进行前向传播。
Pytorch中的forward的理解相关推荐
- pytorch中张量的阶数理解
pytorch中张量的阶数理解 推荐打开2个页面,对比原四阶张量理解各阶的对应关系. 创建一个四阶张量: import torch x = torch.linspace(0,71,72).view(2 ...
- pytorch中数组维度的理解
pytorch中数组维度理解与numpy中类似,pytorch中维度用dim表示,numpy中用axis表示 这里主要想说下维度的变化. dim = x ,表示在第x为上进行操作,那个维度会发生变化. ...
- Pytorch中维度dim的理解使用
0 引言 pytorch中的维度dim主要被用在torch.softmax和torch.max等等函数中.理清dim的意思对于正确使用这些函数有重要意义. 1 相关博文: Pytorch笔记:维度di ...
- pytorch中的forward函数详细理解
文章目录 前言 forward 的使用 forward 使用的解释 前言 最近在使用pytorch的时候,模型训练时,不需要使用forward,只要在实例化一个对象中传入对应的参数就可以自动调用 fo ...
- pytorch中gather函数的理解
官方解释,很清楚了 torch.gather(input,dim,index,out=None) → Tensortorch.gather(input, dim, index, out=None) → ...
- pytorch中torch.manual_seed()的理解
使用
- PyTorch中F.cross_entropy()函数
对PyTorch中F.cross_entropy()的理解 PyTorch提供了求交叉熵的两个常用函数: 一个是F.cross_entropy(), 另一个是F.nll_entropy(), 是对F. ...
- pytorch中网络loss传播和参数更新理解
相比于2018年,在ICLR2019提交论文中,提及不同框架的论文数量发生了极大变化,网友发现,提及tensorflow的论文数量从2018年的228篇略微提升到了266篇,keras从42提升到56 ...
- 三分钟完全了解PyTorch中卷积层内部计算方法和权值初始值的来历,让你对模型有更深层次的理解
首先先说明第一个答案,也就是PyTorch中卷积层的计算方法,其实这点很多人可能在书上已经看过图了,我只是用代码复现一遍 我们把所有变量都明确,首先是输入变量,我们设为2 * 2的全1矩阵,如下: 然 ...
- python中size_x的意思,对pytorch中x = x.view(x.size(0), -1) 的理解说明
在pytorch的CNN代码中经常会看到 x.view(x.size(0), -1) 首先,在pytorch中的view()函数就是用来改变tensor的形状的,例如将2行3列的tensor变为1行6 ...
最新文章
- Java8新特性-接口中的静态方法与默认方法
- globalmem设备代码分析
- 无限试用CrossOver 15天的办法
- 【angularjs】使用angular搭建项目,pc端实现网页中的内容不可复制
- 双线macd指标参数最佳设置_常用指标知多少(二)
- socket编程资料-网络收集
- 张勇云栖大会谈科技担当与责任:做开放共享人人受益的好科技
- android 通过访问 php 接受 or 传送数据
- 从零学ELK系列(四):Docker安装Elasticsearch(超详细图文教程)
- registerModule: 动态注册vuex模块,对于自定义生成组件很有用
- layout android name,android中的android:name属性
- 疫情核酸检测,应考虑使用刷身份证的方式
- Unity【Face Cap】- 关于人脸捕捉的解决方案(二)
- 上百种Python炫酷可视化案例珍藏版——看完掌握~一键三连~老板都想要给你升职加薪哟!
- c语言薛定谔方程,如何解薛定谔方程?-- k · p method
- (每日一练c++)有效的数独
- EspTouch概述
- 删除按升序排列的单链表中的所有重复元素
- AD域详细介绍和部署
- Mysql 5.7 表名大写遇到的坑 error: 1146: Table 'your_table' doesn't exist
热门文章
- 2017开发者技术和薪酬调查报告
- arm64平台进程全局页表pgd的创建和切换
- PhotoshopCC 2018(19.1.3)绿色精简/增强无需注册安装直接用
- UE4内容浏览器改文件夹名称后无法删除空文件夹
- 用C语言程序进行比赛日程排列
- Unity3D-人物角色选择
- Python调用百度API进行人像动漫化
- 【无线篇】(6.0) ❀ 10. FortiCloud 管理 AP (上) ❀ FortiAP 无线AP
- 与计算机学男生谈恋爱,和什么专业男生谈恋爱比较惨?
- 手把手教你在Unity2020中使用Timeline