Pytorch中nn.Sequential()函数创建网络的几种方法

news/2024/9/15 4:23:03/ 标签: pytorch, 人工智能, python

1. 创作灵感

在创建大型网络的时候,如果使用nn.Sequential()将几个有紧密联系的运算组成一个序列,可以使网络的结构更加清晰。

2.应用举例

为了记录nn.Sequential()的用法,搭建以下测试网络:

2.1 方法一

把网络分成3个Sequential序列,分别实现:第一个是卷积序列,第二个是铺平成一维的操作,第3个包含了两个线性层。

python">
class TestNet(nn.Module):def __init__(self, in_channels, mid_channels):super(TestNet,self).__init__()self.conv = nn.Sequential(nn.Conv2d(in_channels,in_channels*2,kernel_size=3,stride=2,padding=1),nn.BatchNorm2d(in_channels*2),nn.ReLU(inplace=True),nn.Conv2d(in_channels*2,in_channels*4,kernel_size=3,stride=2,padding=1),nn.BatchNorm2d(in_channels*4),nn.ReLU(inplace=True))self.flat = nn.Flatten()self.linaer = nn.Sequential(nn.Linear(49*4, 64),nn.Linear(64, 10),nn.Linear(10, 1))def forward(self,x):x = self.conv(x)print(x.shape)x = self.flat(x)print(x.shape)x = self.linaer(x)print(x.shape)return x

运行结果:

从维度上判断,网络符合预期。

2.2  方法二

第二种方法,在网络结构比较复杂且重复的单元比较多,为了自动化生成网络,通常会先定义一个列表,在列表中添加网络,再使用nn.Sequential()。

使用方法二所需要的代码如下:

python">class TestNet2(nn.Module):def __init__(self, in_channels):super(TestNet2,self).__init__()layer1 = []layer2 = []layer1.append(nn.Conv2d(in_channels,in_channels*2,kernel_size=3,stride=2,padding=1))layer1.append(nn.BatchNorm2d(in_channels*2))layer1.append(nn.ReLU(inplace=True))layer1.append(nn.Conv2d(in_channels*2,in_channels*4,kernel_size=3,stride=2,padding=1))layer1.append(nn.BatchNorm2d(in_channels*4))layer1.append(nn.ReLU(inplace=True))self.conv = nn.Sequential(*layer1)self.flat = nn.Flatten()layer2.append(nn.Linear(49*4, 64))layer2.append(nn.Linear(64, 10))layer2.append(nn.Linear(10, 1))self.linaer = nn.Sequential(*layer2)def forward(self,x):x = self.conv(x)print(x.shape)x = self.flat(x)print(x.shape)x = self.linaer(x)print(x.shape)return x

运行结果如下:

与第一种方法的结果相同。

参考文献:

nn.Sequential、nn.ModuleList、nn.ModuleDict区别及使用技巧-CSDN博客


http://www.ppmy.cn/news/1475857.html

相关文章

Spring系列二:基于XML配置bean 中

基于XML配置bean 💖使用utillist进行配置💖属性级联赋值配置💖通过静态工厂获取bean💖bean配置信息重用💖bean创建顺序💖bean的单例和多实例💖bean的生命周期 💖使用utillist进行配置…

洞察解读:“李彦宏:不只迷恋模型,更应追求应用”

目录 洞察解读:“李彦宏:不只迷恋模型,更应追求应用” 模型与应用的区别与联系 个性化应用的重要性与挑战 从技术到应用的转化 展望未来 结语 洞察解读:“李彦宏:不只迷恋模型,更应追求应用” 在当前人工智能技术飞速发展的…

Qt 统计图编程

学习目标:Qt 折线图,柱形图和扇形统计图编程 学习基础 Qt QChart 曲线图表操作-CSDN博客 学习内容 Qt中绘制三种常见的图表非常方便, 主要步骤如下: 1. 折线图: - 使用QLineSeries定义折线数据,添加多个坐标点 - 使用QValueAxis创建X轴和Y轴 - 将…

ShardingSphere的项目应用

1. 事情的起因 最近,随着业务的发展,我们的项目面临着日益增长的数据挑战。系统使用的数据库是mysql,每天的增量差不多在百万左右,由于没有进行分库分表,以前设置的单表保存已经越发不能满足需求,所以想维持表的性能,甲方考虑对这些大数据量的表进行分表操作,同时也采…

【香橙派AiPro】基于VGG16的火灾检测模型预测

目录 引言开发板介绍开发板使用准备工作工具文档 拨码开关镜像烧录连接开发板下载MobaXterm网线-SSH连接开发板设置WIFI连接WIFI-SSH连接开发板确定开发板IP方法 Vnc可视化WindowsiPad 开发工具安装 散热风扇基于VGG16的火灾检测模型预测数据集准备目录结构代码操作 安装宝塔最…

自动驾驶的规划控制简介

自动驾驶的规划控制是自动驾驶系统中的核心组成部分,它负责生成安全、合理且高效的行驶轨迹,并控制车辆按照这个轨迹行驶。规划控制分为几个层次,通常包括行为决策(Behavior Planning)、轨迹规划(Trajector…

docker build 建立镜像,多出很多 none 的中间层镜像

虚悬镜像 仓库名、标签均为的镜像被称为虚悬镜像,一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的。 出现虚悬镜像的原因一般是在docker pull **:latest 时产生。当新版本发布后重新pull,旧的镜像名会被新镜像所占用&a…

车载视频监控管理方案:无人驾驶出租车安全出行的保障

近日,无人驾驶出租车“萝卜快跑”在武汉开放载人测试成为热门话题。随着科技的飞速发展,无人驾驶技术已逐渐从概念走向现实,特别是在出租车行业中,无人驾驶出租车的推出将为公众提供更为安全、便捷、高效的出行服务。 视频监控技…

【linux深入剖析】管道的四种情况以及五种特性

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. 管道的四种情况2. 管道…

更新商品前端接口编写

文章目录 新增页面书写写表单价格符号的显示然后状态的书写后端枚举书写时间书写使用组件 新增页面书写 书写直接复制页面 写表单的绑定信息 然后绑定表单 表单绑定还有表单数据的绑定 标签中ref的作用就是将 该组件注册到vue对象的ref属性中 那么在vue运行的时候,会加载所…

【Redis】哨兵(sentinel)

文章目录 一、哨兵是什么?二、 哨兵sentinel文件参数三、 模仿主机redis宕机四、哨兵运行流程和选举原理SDOWN主观下线ODOWN客观下线 五、 使用建议 以下是本篇文章正文内容 一、哨兵是什么? 哨兵巡查监控后台master主机是否故障,如果故障了…

MacOS如何切换shell类型

切换 shell 类型 如果你想在不同的 shell 之间切换,以探索它们的不同之处,或者因为你知道自己需要其中的一个或另一个,可以使用如下命令: 切换到 bash chsh -s $(which bash)切换到 zsh chsh -s $(which zsh)$()语法的作用是运…

「Python」基于Gunicorn、Flask和Docker的高并发部署

目标预期 使用Gunicorn作为WSGI HTTP服务器,提供高效的Python应用服务。使用Flask作为轻量级Web应用框架,快速开发Web应用。利用Docker容器化技术,确保应用的可移植性和一致性。实现高并发处理,提高应用的响应速度和稳定性。过程 环境准备:安装Docker和Docker Compose。编…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【查询密钥是否存在(ArkTS)】

查询密钥是否存在(ArkTS) HUKS提供了接口供应用查询指定密钥是否存在。 开发步骤 指定密钥别名keyAlias,密钥别名最大长度为64字节。初始化密钥属性集。用于查询时指定密钥的属性TAG,比如查询的密钥范围(全量/单个),当查询单个时&#xff…

公司想无偿裁员,同事赖着不走

关注卢松松,会经常给你分享一些我的经验和观点。 这招好像也不错! 事情是这样的:某公司准备把成本高的员工都裁掉,主要包含研发部和程序员,总共18个人,准备裁掉10人,因为他们工资开的太高了,…

ArcGIS Pro、ChatGPT、Python、InVEST等多技术融合的水文、生态、气候变化等地学领域科研及项目综合能力提升

在当前科学技术飞速发展的背景下,综合科研能力的提升对于推动各个领域的创新和发展具有重要的意义。在当前竞争激烈的科研环境中,掌握先进的数据处理与分析技术、深入了解前沿的研究领域、有效利用智能工具进行科研工作,已成为科研人员脱颖而…

frp内网穿透xtcp安全点对点p2p部署记录打洞失败解决方法

环境 一、有公网IP、nas主机(需要穿透里面的服务)、安卓手机、frps-0.58.1、frpc-0.59.0(群晖NAS套件)、安卓版frpc-0.56.0 二、两端frpc必须要有一端nat网络类型不是非对称nat 开始 有公网的主机上配置frps.toml bindPort 7000nas主机端frpc.toml配…

定制化服务发现:Eureka中服务实例偏好的高级配置

定制化服务发现:Eureka中服务实例偏好的高级配置 在微服务架构中,服务实例的智能管理和优化是保证系统高效运行的关键。Eureka作为Netflix开源的服务注册与发现框架,提供了丰富的配置选项来满足不同场景下的需求。服务实例偏好配置允许开发者…

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构: 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…

Spring-Aop源码解析

本文主要讲解spring实现aop的相关源码学习教程,以aop.xml配置文件的方式为例,讲解如何将配置文件的标签解析成bean定义信息,存放到beanfactory中。以及advisor的bean定义信息以及实例化的过程;对哪些类进行代理,以及判…