【forward方法--深度学习】

2023-05-16

1.基本用法

在pytorch中,使用torch.nn包来构建神经网络,我们定义的网络继承自nn.Module类。而一个nn.Module包含神经网络的各个层(放在__init__里面)和前向传播方式(放在forward里面),例如:

class Module(nn.Module):
	# 网络结构
    def __init__(self):
        super(Module, self).__init__()
        # ......
    # 前向传播
    def forward(self, x):
        # ......
        return x
#输入数据
data = .....  
# 实例化网络
module = Module()
# 前向传播
module(data)  
# 而不是使用下面的
# module.forward(data)   

可以发现,我们在编写代码的时候并不会显式地去调用forward方法。原因在于:

module(data)

实际上就等价于

module.forward(data)

2.原理分析

首先明确为什么module是一个对象,却可以像一个方法一样传入data进行调用

module(data)

原理是python中的__call__语法。例如:

class Module():
    def __call__(self, data):        
        print('传入的参数为->', data)
        
module = Module()
module(1)
输出为:

传入的参数为-> 1

也就是说,在我们编写的模型所继承的nn.Module类中,其__call__方法内便包含了某种形式的对forward方法的调用,从而使得我们不需要显式地调用forward方法。
当然,以上是简化的理解,实际的过程应为:

调用module的call方法
module的call里面调用module的forward方法
forward里面如果碰到Module的子类,回到第1步,如果碰到的是Function的子类,继续往下
调用Function的call方法
Function的call方法调用了Function的forward方法
Function的forward返回值
module的forward返回值
在module的call进行forward_hook操作,然后返回值
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【forward方法--深度学习】 的相关文章

  • Matlab中的抽象函数的求值

    Matlab中的抽象函数的求值 采用匿名函数 y 61 64 x x 2 43 2 x 8 建立匿名函数y y 4 返回当x 61 4时 xff0c y的结果 上面的命令在命令窗口可以实现 xff0c 但是在M文件中没有实现 使用matla
  • 白嫖5T空间Onedrive并搭建下载站

    更好的阅读体验欢迎访问博客白嫖5T空间Onedrive并搭建下载站 前言 白嫖一个微软E5账号不仅能自己使用office全家桶 xff0c 还能造福25个小伙伴 xff0c 何乐而不为 xff1f 这里借助onedirve的API和onei
  • 阿里云Linux(Debian) + Tomcat搭建网站

    工具 xff1a Linux 我买的是阿里云的主机Linux Debian64位的 Tomcat Java Web服务器 putty 连接远程主机的客户端 WinSCP 远程主机的可视化界面 xff0c 方便操作文件 jdk1 8 需要配置

随机推荐

  • 动态链接库(DLL)开发基础

    本周我的博客涉及到动态链接库的基础开发 我在刚开始学习动态链接库的开发 在网上找DLL开发基础知识教程时发现网上的资料还是太杂 xff0c 对初学者不太友好 xff0c 于是我就着手写了这篇博客 xff0c 本篇博客知识有DLL简介 DLL
  • Mybatis:使用Mybatis执行SQL多出“limit?“,原来这样就可以解决!!!

    问题展示说明 业务需要只展示分组排序后的前15条 xff0c 数据写了如下sql xff1a 启动项目访问接口后 xff0c 报如下错误 xff1a 解决办法 参考了一下MyBatis官网和其他博客发现需要清理一下之前设置过的Page缓存
  • .NET编程——利用C#实现远程桌面连接(WinForm)

    通过学习利用利用C 实现登录功能后 xff0c 本文将通过Visual Studio 2019运行实现远程桌面连接 目录 引言 前期准备 连接固定计算机 连接指定计算机 可能遇到的问题 引言 实现远程桌面有一个大前提是不可忽略的 xff0c
  • 单片机基础:什么是中断系统、中断系统如何用(附中断系统应用实例)

    中断系统 1 前言2 什么是中断3 什么是中断系统4 中断的流程5 中断的优先级控制6 中断源外部中断 7 与中断有关的特殊功能寄存器7 1 定时 计数器控制寄存器 96 TCON 96 7 2 串行口控制寄存器 96 SCON 96 7
  • 单片机基础:MCS-51单片机的硬件结构(附硬件结构框图)

    单片机硬件结构知识点非常琐碎 xff0c 通过一次两次的学习是不太可能记住的 想要熟练掌握硬件结构 xff0c 最好的方法是在实验中练习 xff0c 通过编程多见多用才能牢固的掌握 MCS 51单片机硬件结构 1 硬件系统框图2 单片机功能
  • 三种简单排序(冒泡、插入、选择)的比较和图解

    冒泡排序 这种排序方式是最容易理解的 xff0c 主体思想就是 xff1a 指针重复地走访过要排序的数列 xff0c 一次比较两个元素 xff0c 如果他们的顺序错误就把他们交换过来 走访数列的工作是重复地进行直到没有再需要交换 xff0c
  • 单片机基础:对单片机指令系统中七种寻址方式的理解

    七种寻址方式 1 立即寻址2 直接寻址3 寄存器寻址4 寄存器间接寻址4 1记录一下调试程序过程中遇到的一个错误 5 基址加变址寻址6 相对寻址7 位寻址 1 立即寻址 立即寻址就是不寻址 xff0c 直接把被操作的数据 立即数 写在指令当
  • Python课程设计:简单博客管理系统(完整代码)

    博客管理系统 1 框图及编程思路2 程序执行2 1主界面2 2登录后界面2 3注册信息保存格式2 4文章保存格式 3 代码 注意 xff1a 程序中涉及到文件路径的 xff0c 可以酌情修改电脑本地路径 这是我的Python语言的课程设计作
  • 单片机P0端口驱动数码管0-9循环显示(Proteus仿真+C语言程序)

    P0端口驱动共阳极数码管循环显示0 9 1 实验效果2 数码管3 Proteus仿真4 源代码 1 实验效果 2 数码管 一个数码管包含七段发光二极管 xff0c 通过控制每段二极管的亮灭 xff0c 继而显示出不同的数字 数码管分为共阴极
  • 数据库系统关系代数的学习

    前言 关系代数是一种抽象的查询语言 xff0c 是关系数据库查询语言的基础 xff0c 关系代数包括传统的集合运算和专门的关系运算 基本操作 并 差 笛卡尔积 投影 选择 组合操作 交 连接 自然连接 R S 除运算 良好的理解关系代数的几
  • 基于51单片机的矩阵按键学习

    一 矩阵按键 矩阵按键就是独立按键的结合体 xff0c 矩阵按键的优点是提高了I O端口的利用率 xff0c 用M 43 N个I O端口就可以控制M N个独立按键 而一个独立按键就需要一个I O端口来控制 xff0c I O端口的利用率很低
  • LCD1602液晶显示模块学习笔记

    LCD1602液晶显示模块 一 初识LCD6021 1 实物图1 2 引脚图1 3 引脚功能说明 二 显示位置三 显示内容四 指令集五 工作时序5 1 写操作时序5 2 读操作时序 六 编程思路6 1 写数据6 2 写指令6 3 初始化6
  • 微信聊天记录导出(2020新版)

    微信聊天记录导出 2020新版 首先说明 xff0c 坑的部分主要是数据库破解 项目地址 xff1a https github com fly dragon211 Wechat message analysis 1 本地备份提取聊天记录 这
  • VSC配置C C++

    记录一下配置的过程 xff0c 不然搞完就忘 还会忘记搞事情时的耐心和韧劲 一 GCC 1 下载C语言编译器 链接 xff1a MinGW w64 for 32 and 64 bit Windows Browse Files at Sour
  • Python下实现Tesseract OCR训练字符库(OpenCV-python边缘检测代替jTessBoxEditor手动矫正)

    Python 下实现 Tesseract OCR 训练字符库 xff08 OpenCV 边缘检测代替 jTessBoxEditor 手动矫正 xff09 作者 xff1a 殷越 目录 一 概述二 环境搭建1 下载 Tesseract OCR
  • 【C语言中清空文件的方法】

    C语言清空文件内容 C语言中清空文件的方法 C语言中清空文件的方法 C语言中清空文件的方法很简单 只要以 可写 的方式打开文件 xff0c 就能将这个文件清空 span class token macro property span cla
  • 服务器知识:阿里云ECS实例设置用户root密码、远程连接

    nbsp nbsp nbsp nbsp 阿里云服务器购买之后 新的实例需要设置root登录密码之后才能正常操作 不然就登录不了 重置实例登录密码的时候 适用于在新创建时未设置密码或者忘记密码的情况 对于正在运行的实例 需要在重置实例登录密码
  • 解决chkconfig设置开机启动时出现missing LSB的错误

    0x00 主要原因是脚本不符合LSB tags规范 xff0c 在 bin bash下面添加如下代码即可 以tomcat为例 span class hljs preprocessor BEGIN INIT INFO span span cl
  • 【MinMaxScaler函数】

    会查MinMaxScaler的基本上都应该理解数据归一化 xff0c 本质上是将数据点映射到了 0 1 区间 xff08 默认 xff09 xff0c 但实际使用的的时候也不一定是到 0 1 xff0c 你也可以指定参数feature ra
  • 【forward方法--深度学习】

    1 基本用法 在pytorch中 xff0c 使用torch nn包来构建神经网络 xff0c 我们定义的网络继承自nn Module类 而一个nn Module包含神经网络的各个层 放在 init 里面 和前向传播方式 放在forward