首页 > 其他分享 >【pytorch】土堆pytorch教程学习(六)神经网络的基本骨架——nn.module的使用

【pytorch】土堆pytorch教程学习(六)神经网络的基本骨架——nn.module的使用

时间:2023-05-09 13:11:44浏览次数:44  
标签:__ nn self init module pytorch Module forward

torch.nn 是 pytorch 的一个神经网络库(nn 是 neural network 的简称)。

Containers

torch.nn 构建神经网络的模型容器(Containers,骨架)有以下六个:

  • Module
  • Sequential
  • ModuleList
  • ModuleDict
  • ParameterList
  • ParameterDict

本博文将介绍神经网络的基本骨架——nn.module的使用。

Module

所有神经网络模块的基类。自定义的模型也应该继承该类。

自定义模型继承该类要重写 __init__()forward()

  • __init__() 里构建子模块,将子模块作为当前模块类的常规属性。一般将网络中具有可学习参数的层放在__init__中。
  • forward() 前向传播函数,定义每次调用时执行的计算,应该被所有子类重写。
# 官方案例
import torch.nn as nn
import torch.nn.functional as F

# 自定义模型
class Model(nn.Module):
    def __init__(self):
        super().__init__() # 在对子类进行赋值之前,必须对父类进行__init__调用。
        # 构建子模块
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

	# 前向传播函数
    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))
        
# 模型调用
x = torch.randn(3, 1, 10, 20)
model = Model()
y = model(x)

为什么 forward() 方法能在model(x)时自动调用?
在 python 中当一个类定义了 __call__方法,则这个类实例就成为了可调用对象。而nn.Module 中的 __call__ 方法中调用了 forward() 方法,因此继承了 nn.Module 的子类对象就可以通过 model(x) 来调用 forward() 函数。


只要在 nn.Module 的子类中定义了 forward 函数,backward 函数就会被自动实现(利用Autograd)。

标签:__,nn,self,init,module,pytorch,Module,forward
From: https://www.cnblogs.com/hzyuan/p/17384567.html

相关文章

  • httprunner 4.x学习 - 7.环境变量.env 的使用
    前言一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境:本地开发环境测试环境生产环境在不同环境中,我们可能会使用不同的数据库或邮件发送等配置,这时候则需要通过.env文件来针对不同的运行环境作不同的设置。环境变量基础知识在自动化测试中......
  • delphi cannot make a visible window modal报错的解决过程
    抛出问题: 排除过程:1.在TFrmChangePW窗口的create事件里打断点,结果发现,根本没停顿,所以判断问题不在TFrmChangePW窗体里,而是showmodal这语句里出了问题,点中断,跳到抛出错误的地方:2.if里的四个条件,检查了第一个,第二个和第四个都是没问题的,第三个(fsModalinFFormS......
  • httprunner 4.x学习 - 6.debugtalk辅助函数的使用
    前言httprunner4.x可以支持go语言和python语言写辅助函数,本篇主要介绍python语言写辅助函数。debugtalk辅助函数在项目根目录新建debugtalk.py文件写辅助函数可以实现自动化生成动态参数。如下生成时间戳和随机字符串示例#debugtalk.pyimporttimeimportuuidde......
  • OpenGL学习笔记-3:编译shader报错: cannot convert from 'const highp float' to 'Frag
    报错信息: ERROR::SHADER_COMPILATION_ERRORoftype:FRAGMENTERROR:0:10:'assign':cannotconvertfrom'consthighpfloat'to'FragUserData4-componentvectorofhighpfloat'-------------------------------------------------......
  • Windows系列---【浏览器突然连不上网,报"ERR_PROXY_CONNECTION_FAILED"的解决方案】
    浏览器突然连不上网,报"ERR_PROXY_CONNECTION_FAILED"的解决方案1.问题电脑的浏览器里装的有梯子,突然有一天浏览器访问不了外网了,打开哪个网站都报"ERR_PROXY_CONNECTION_FAILED",但是微信可以正常使用。2.分析微信可以使用,显然是浏览器的问题,再看错误,明显是代理有问题。3.解......
  • 通过 PowerShell 删除所有running状态的flow
    我们经常会出现流出现多个running并且run不完的情况下。并且积攒过多会导致降速问题。所以我们可以通过powershell来运行cancel这些running状态运行。  首先我们要安装NPM,并且运行npmi-g@pnp/cli-microsoft365  安装成功之后,我们要登陆m365login 这里......
  • AtCoder Beginner Contest 209(D,E)
    AtCoderBeginnerContest209(D,E)D(树,lca)D这个题给出\(n\)个点,\(n-1\)条边,有两个人,一个人在\(c\)点,一个人在\(d\)点,两人以相同的速度朝着对方走来(并且都是按照最短路的走法),问这两个人相遇是在点上,还是在路上这一题意很好知道,就是判断这两点之间的最短距离的奇偶性然后我就一......
  • flink Connecting to remote task manager 'localhost/127.0.0.1:44489
    问题:启动集群后,执行任务时失败:Causedby:org.apache.flink.runtime.io.network.partition.consumer.PartitionConnectionException:Connectionforpartition47d4a412246bdbbc3447e1968e07c821#1@04049d45261135a1a8bae9c8f62a1ba4_0a448493b4782967b150582570326227_1_0not......
  • CodeForces - 630F Selection of Personnel (组合数学)
    TimeLimit: 500MS MemoryLimit: 65536KB 64bitIOFormat: %I64d&%I64uCodeForces-630FSelectionofPersonnelSubmit StatusDescriptionOnecompanyofITCitydecidedtocreateagroupofinnovativedevelopmentsconsistingfrom 5 to 7 peopleandhir......
  • Httprunner修改response中数据类型
    支持的类型默认三种Text,bytes,Dict如果超出三种类型则报错Epydantic.error_wrappers.ValidationError:3validationerrorsforResponseDataEbodyEstrtypeexpected(type=type_error.str)EbodyEbytetypeexpected(type=type_error.bytes)EbodyE......