pytorch-nn.Module

目录

  • 1. nn.Module
  • 2. nn.Sequential容器
  • 3. 网络参数parameters
  • 4. Modules内部管理
  • 5. checkpoint
  • 6. train/test状态切换
  • 6. 实现自己的网络层
    • 6.1 实现打平操作
    • 6.2 实现自己的线性层
  • 7. 代码

1. nn.Module

是所有nn.类的父类,其中包括nn.Linear nn.BatchNorm2d nn.Conv2d nn.ReLU nn.Sigmoid等等

2. nn.Sequential容器

如下图,定义一个net网络,将所有继承自nn.Module的子类定义的网络层加入到了nn.Sequential容器中,与一层一层的单独调用模块组成序列相比,nn.Sequential() 可以允许将整个容器视为单个模块(即相当于把多个模块封装成一个模块),forward()方法接收输入之后,nn.Sequential()按照内部模块的顺序自动依次计算并输出结果。因此可以利用nn.Sequential()搭建模型架构

在这里插入图片描述

3. 网络参数parameters

如下图,通过net.parameters()可以获取到net的参数,转换成list后,通过index访问第几个参数,比如:图中的list(net.named_parameters())[0]就可以获取到网络的第一个参数,也就是网络第一层的w参数。
通过list(net.named_parameters()).items()获取到所有网络层,从获取结果可以看到,每一层都被pytorch命名了,比如:‘0.weight’,‘0.bias’,即第一层网络的weight和bias.
在这里插入图片描述

4. Modules内部管理

与根节点相连的直系亲属叫children,其他再与children连接的节点都叫modules
如下图,nn.Sequential是Net的children,其他的是modules,包括nn.ReLU、nn.Linear、BasicNet
在这里插入图片描述
从下面这张截图可以看出,Net本身和Children也都是modules
在这里插入图片描述

5. checkpoint

为了防止train过程意外停止,需从头train的问题,train过程需要定期保持checkpoint,而一旦出现train意外停止,就可以从最后一次checkpoint接着训练。
torch.save保存checkpoint
torch.load_state_dict(torch.load(‘chpt.md’))用于load checkpoint
在这里插入图片描述

6. train/test状态切换

所有nn.类都继承自nn.Module,因此在切换train和test状态时,只需要调用一次net.train()或net.eval即可,而不需要那些train和test(dropout)行为不一致的类每个单独去切换.
在这里插入图片描述

6. 实现自己的网络层

6.1 实现打平操作

全连接层层需要打平输入,打平操作通过.view方法实现,由于Flatten继承自nn.Module,因此可以直接放到nn.Sequential中。
在这里插入图片描述

6.2 实现自己的线性层

通过net.parameters()可以将网络参数加到优化器中。
在这里插入图片描述
troch.tensor是不会自动加到nn.parameters中,因此需要使用nn.Parameter将tensor加到nn.parameters,从而才能加到SGD等优化器中。

在这里插入图片描述

7. 代码

import  torch
from    torch import nn
from    torch import optimclass MyLinear(nn.Module):def __init__(self, inp, outp):super(MyLinear, self).__init__()# requires_grad = Trueself.w = nn.Parameter(torch.randn(outp, inp))self.b = nn.Parameter(torch.randn(outp))def forward(self, x):x = x @ self.w.t() + self.breturn xclass Flatten(nn.Module):def __init__(self):super(Flatten, self).__init__()def forward(self, input):return input.view(input.size(0), -1)class TestNet(nn.Module):def __init__(self):super(TestNet, self).__init__()self.net = nn.Sequential(nn.Conv2d(1, 16, stride=1, padding=1),nn.MaxPool2d(2, 2),Flatten(),nn.Linear(1*14*14, 10))def forward(self, x):return self.net(x)class BasicNet(nn.Module):def __init__(self):super(BasicNet, self).__init__()self.net = nn.Linear(4, 3)def forward(self, x):return self.net(x)class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.net = nn.Sequential(BasicNet(),nn.ReLU(),nn.Linear(3, 2))def forward(self, x):return self.net(x)def main():device = torch.device('cuda')net = Net()net.to(device)net.train()net.eval()# net.load_state_dict(torch.load('ckpt.mdl'))### torch.save(net.state_dict(), 'ckpt.mdl')for name, t in net.named_parameters():print('parameters:', name, t.shape)for name, m in net.named_children():print('children:', name, m)for name, m in net.named_modules():print('modules:', name, m)if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

肺结节14问,查出肺结节怎么办?哪些能用中医调治消散?快来了解一下吧

近些年,随着大众防癌意识的加强,和胸部低剂量CT的普及,肺结节的检出率也逐年升高,不少患者CT报告上,写着“肺小结”“肺部磨玻璃结节”的字样,当你看到这几个字时,会不会瞬间紧张起来&#xff1…

编程规范-代码检测-格式化-规范化提交

适用于vue项目的编程规范 – 在多人开发时统一编程规范至关重要 1、代码检测 --Eslint Eslint:一个插件化的 javascript 代码检测工具 在 .eslintrc.js 文件中进行配置 // ESLint 配置文件遵循 commonJS 的导出规则,所导出的对象就是 ESLint 的配置对…

简化电动汽车充电器和光伏逆变器的高压电流检测

在任何电气系统中,电流都是一个至关重要的参数。电动汽车 (EV) 充电系统和太阳能系统都需要检测电流的大小,以便控制和监测功率转换、充电和放电。电流传感器通过监测分流电阻器上的压降或导体中电流产生的磁场来测量电流。 金属氧化物半导体场效应晶体…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题的解决方式

问题描述 客户端root用户连接数据库出现出现Public Key Retrieval is not allowed 原因分析: 加上allowPublicKeyRetrievalfalse: 解决方案: allowPublicKeyRetrievaltrue:

Java Web学习笔记14——BOM对象

BOM: 概念:浏览器对象模型(Browser Object Model),允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象。 组成: Window:浏览器窗口对象 介绍:浏览…

光伏电站鸟害解决方案,列式冲击波声压光伏驱鸟器

光伏电站的运营过程中,最怕遇上鸟粪污染。鸟粪不仅难以清洗,还可能导致光伏组件损坏、降低发电效率。因此,制定并实施有效的驱鸟策略对于光伏电站的稳定运营至关重要。 针对光伏电站的鸟害问题,我们可以从以下几个方面来解决&…

知名优秀定制线缆生产源头工厂推荐-精工电联:全程跟踪监制,打造水下机器人线缆定制新标杆

在科技飞速发展的今天,精工电联作为高科技智能化产品及自动化设备专用连接线束和连接器配套服务商,始终站在行业前沿。我们专注于为高科技行业提供高品质、优匹配的集成线缆和连接器定制服务,特别是在水下机器人线缆定制领域,通过…

sql死锁分析

一、重要参数 获取事务信息:SELECT * FROM information_schema.INNODB_TRX; 获取锁等待:SELECT * FROM information_schema.INNODB_LOCK_WAITS; 查看锁信息:SELECT * FROM information_schema.INNODB_LOCKS WHERE lock_trx_id IN () 二、case1:间隙锁和x锁互斥导致死锁 1、背景…

大厂AI团战高考作文,华师一附中特级教师这样打分

在人工智能的浪潮中, 人们不禁疑问: AI真的能超越人类吗? 这究竟是现实还是幻想? 我们将目睹一场前所未有的较量: 百度文心一言、阿里通义千问、 腾讯混元、字节豆包 四家国内顶尖互联网企业 精心打造的AI大模…

HBM简介

1、什么是HBM HBMHigh Bandwidth Memory 是一种用于某些 GPU的 3D 堆叠 DRAM存储器 (动态随机存取存储器)以及服务器、高性能计算 (HPC) 、网络连接的内存接口。其实就是将很多个DDR芯片堆叠在一起后和GPU封装在一起,实…

ROS socketcan_bridge使用说明

ROS socketcan_bridge使用说明(以ubuntu20.04为例) socketcan_bridge是什么 ROS针对socketcan提供了三个层次的驱动库,分别是ros_canopen,socketcan_bridge和socketcan_interface。 socketcan_interface: 功能&#x…

政安晨【零基础玩转各类开源AI项目】:解析开源项目:Champ 利用三维参数指导制作可控且一致的人体图像动画

目录 论文题目 Champ: 利用三维参数指导制作可控且一致的人体图像动画 安装 创建 conda 环境: 使用 pip 安装软件包 推理 1. 下载预训练模型 2. 准备准备引导动作数据 运行推理 训练模型 准备数据集 运行训练脚本 数据集 政安晨的个人主页:…

工业无线通信解决方案,企业在进行智能化升级改造

某大型制造企业在进行智能化升级改造,需要将分布在各个车间的数控机床、自动化生产线、AGV小车等设备连接到云端,实现设备的远程监控、数据采集分析等功能。之前工厂内部是用工业以太网连接,存在布线难、成本高、灵活性差等问题。 在了解客户需求后,我司星创易联的工程师建议客…

淘宝扭蛋机小程序,扭蛋市场创新模式

扭蛋机作为潮玩市场的娱乐消费方式,成为了当下消费者的新宠。扭蛋机凭借自身性价比高、商品多样、惊喜性等特点,吸引了各个年龄层的消费者,不仅年轻人喜欢,不少小学生和老年人也非常喜欢,扭蛋机市场迎来了快速发展期。…

简单聊下办公白环境

在当今信息化时代,办公环境对于工作效率和员工满意度有着至关重要的影响。而白名单作为一种网络安全策略,其是否适合办公环境,成为了许多企业和组织需要思考的问题。本文将从白名单的定义、特点及其在办公环境中的应用等方面,探讨…

NRP-Z81探头NRP-Z85功率传感器NRP-Z86罗德与施瓦茨

精确和简单的功率测量重要的特点是高测量精度和速度。紧凑、坚固的R&SNRX基本单元,带彩色触摸显示屏,支持多达四个R&SNRP功率传感器和所有传感器相关测量功能。测量值以数字或图形方式显示,具体取决于测量功能。高分辨率图形用户界面…

【必会面试题】JVM内存分区?垃圾回收(GC)算法?如何处理OOM?

目录 JVM分区模型GC(垃圾回收)算法:处理OOM(Out Of Memory): JVM分区模型 JVM(Java虚拟机)内存划分为多个区域,以支持其运行时环境和对象的生命周期管理。以下是主要的内…

变压器绕线完成之后要做的事

1 调整感量:测主绕组电感量,通过磨气隙或垫气隙,测得感量没错以后,用胶带封装磁芯 2 测验同名端是否正确:两绕组首尾相连,测试连接后的总感量,是否比感量大的那个绕组还大。如果是,…

澳大利亚和德国媒体投放-国外新闻发稿-海外软文推广

德国媒体 Firmenpresse德国新闻 Firmenpresse德国新闻是一家备受欢迎的新闻发布平台,其好友搜索引擎在收录网站方面表现出色。如果您希望更好地将您的新闻传播给德国受众,Firmenpresse德国新闻将是一个理想的选择。 Frankfurt Stadtanzeiger法兰克福城…

电气灭火产品调查:全氟己酮自自动灭火贴多少钱一个?

根据国家消防救援局于透露,今年年初,河南南阳、江西新余、江苏南京接连发生重大火灾事故,截至日前,全国共接报火灾45万起,住宅、宾馆餐饮店、电动车火灾数量相比去年同期均有所上升。从引 发火灾的原因来看&#xff0c…