nn.Sequential 和 nn.ModuleList

在 PyTorch 中,nn.Sequentialnn.ModuleList 都是用来容纳多个子模块的容器,但它们的用途和行为有所不同。以下是它们的用法和区别的详细解释,以及样例代码。

nn.Sequential

nn.Sequential 是一个顺序容器,模块将按它们在传递给 Sequential 的顺序依次执行。它适用于那些输入经过多个模块顺序处理的简单模型。

用法

import torch.nn as nnmodel = nn.Sequential(nn.Conv2d(1, 20, 5),nn.ReLU(),nn.Conv2d(20, 64, 5),nn.ReLU()
)

nn.ModuleList

nn.ModuleList 是一个持有 nn.Module 的列表。与 nn.Sequential 不同的是,nn.ModuleList 并不会定义模块的前向传播顺序,您需要在 forward 方法中手动定义它们的顺序。这给了用户更大的灵活性,可以在前向传播时对模块进行不同的操作。

用法

import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.layers = nn.ModuleList([nn.Conv2d(1, 20, 5),nn.ReLU(),nn.Conv2d(20, 64, 5),nn.ReLU()])def forward(self, x):for layer in self.layers:x = layer(x)return xmodel = MyModel()

区别总结

nn.Sequential模块按顺序执行,适用于顺序的简单模型。

nn.ModuleList只是一个持有模块的列表,您需要手动定义前向传播的顺序,适用于需要更复杂控制的模型。

样例代码

以下是一个简单的例子,展示了如何使用这两个容器来构建模型:

import torch
import torch.nn as nn# 定义一个顺序执行的模型
model_seq = nn.Sequential(nn.Conv2d(1, 20, 5),nn.ReLU(),nn.Conv2d(20, 64, 5),nn.ReLU()
)# 创建一个示例输入
input_seq = torch.randn(1, 1, 28, 28)
# 前向传播
output_seq = model_seq(input_seq)
print(output_seq.shape)import torch
import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.layers = nn.ModuleList([nn.Conv2d(1, 20, 5),nn.ReLU(),nn.Conv2d(20, 64, 5),nn.ReLU()])def forward(self, x):for layer in self.layers:x = layer(x)return x# 定义一个模型
model_list = MyModel()# 创建一个示例输入
input_list = torch.randn(1, 1, 28, 28)
# 前向传播
output_list = model_list(input_list)
print(output_list.shape)

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

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

相关文章

重学java 57.哈希表结构存储过程

别焦虑,生活无非见招拆招 —— 24.6.3 哈希表存储数据去重复的过程: a.先比较元素的哈希值(重写hashCode),再比较内容(重写equals) b.如果哈希值不一样,证明内容不一样,存 c.如果哈希值一样,再比较内容 如果哈希值一样,内容不一样(哈希碰撞,哈希冲突),存 如果哈希值…

Vue3-VueRouter

客户端 vs. 服务端路由​ 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服务端获得全新的 HTML,然后重新加载整个页面。 然而,在单页面应用中&a…

03-3.2.1 队列的基本概念

👋 Hi, I’m Beast Cheng👀 I’m interested in photography, hiking, landscape…🌱 I’m currently learning python, javascript, kotlin…📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

(文章复现)基于共享储能服务的智能楼宇双层优化配置

参考文献: [1]张浩鹏,李泽宁,薛屹洵,等.基于共享储能服务的智能楼宇双层优化配置[J/OL].中国电机工程学报,1-12[2024-05-22]. 1.摘要 为降低城市化进程中楼宇储能投资成本,提出一种基于共享储能服务的智能楼宇(Intelligent Buildings&#…

mysql启动出现Error: 2 (No such file or directory)

查看mydql状态 systemctl status mysqlThe designated data directory /var/lib/mysql/ is unusable 查看mysql日志 tail -f /var/log/mysql/error.logtail: cannot open ‘/var/log/mysql/error.log’ for reading: No such file or directory tail: no files remaining 第…

【数智化CIO展】吉家宠物CIO张志伟:深度挖掘数据价值是数字化发展趋势,才能实现企业精细化运营...

张志伟 本文由吉家宠物CIO张志伟投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。丨推荐企业:观远数据 大数据产业创新服务媒体 ——聚焦数据 改变商业 中国“宠物经济”热潮不断攀升,国内宠物市场的竞…

【牛客面试必刷TOP101】Day28.BM49 表达式求值和BM52 数组中只出现一次的两个数字

文章目录 前言一、BM49 表达式求值题目描述题目解析二、BM52 数组中只出现一次的两个数字题目描述题目解析总结 前言 一、BM49 表达式求值 题目描述 描述: 请写一个整数计算器,支持加减乘三种运算和括号。 数据范围:0∣s∣≤100,…

香蕉派BPI-F3 进迭时空(SpacemiT)K1RISC-V开发板软件下载链接

香蕉派BPI-F3是一款工业级 8核RISC-V开源硬件开发板,它采用进迭时空(SpacemiT) K1 8核RISC-V芯片设计,CPU集成2.0 TOPs AI计算能力。4G DDR和16G eMMC。2个GbE以太网接口,4个USB 3.0和PCIe M.2接口,支持HDM…

跟着小白学linux的基础命令

小白学习记录: 前情提要:Linux命令基础格式!查看 lsLinux 的7种文件类型及各颜色代表含义 进入指定目录 cd查看当前工作目录 pwd创建一个新的目录(文件夹) mkdir创建文件 touch查看文件内容 cat、more操作文件、文件夹- 复制 cp- 移动 mv- 删…

代码随想录算法训练营第四十八天| 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 (进阶) 题目链接:70. 爬楼梯 (进阶) 文档讲解:代码随想录/爬楼梯 (进阶) 状态:已完成(0遍) 解题过程 这几天博主忙着面试和入职&am…

25-unittest执行顺序

在使用unittest框架时,各个测试方法的执行顺序是怎样的,本篇通过简单案例讲解unittest执行顺序。 一、定义测试类 import unittestclass Demo(unittest.TestCase):def setUp(self):print("start!")def tearDown(self):print("end!"…

前端工程化工具系列(八)——Commitizen(v4.3.0):Git 提交规范化工具

在 前端工程化工具系列(四)—— Commitlint(v19.3.0):规范化 Git 提交 中曾介绍过 commitlint,它主要负责检查提交信息的规范性。而本文中的 commitizen,则是提供给了一个交互式的命令行界面,引导开发者按照…

度安讲 | 第二期「安全左移·业务护航」技术沙龙成功举办

当下,“安全左移”作为落地DevSecOps的重要实践之一,已在业界达成共识。DevSecOps作为一种集开发、安全、运维于一体的软件开发和运营模式,强调在敏捷交付下,“安全”在软件开发生命周期的全覆盖贯穿和核心位置。所谓“安全左移”…

Git命令行

文章目录 初始化配置仓库 其实Idea里自带的命令能满足工作多数场景,但也会使思维受限,总结下Git里常用的命令行对Idea进行补充 初始化配置 # 查看git配置(重点关注账号和邮箱) git config --list# 设置全局姓名和邮箱 git config…

不同类型红酒的保存期限与品质变化

云仓酒庄雷盛红酒,以其多样的品种和与众不同的风味吸引了无数葡萄酒爱好者。然而,不同类型和风格的红酒在保存过程中,其期限和品质变化也各不相同。本文将深入探讨这个问题,以帮助消费者更好地理解和欣赏云仓酒庄雷盛红酒的多样性…

【Linux】Linux环境基础开发工具_5

文章目录 四、Linux环境基础开发工具Linux小程序---进度条git 未完待续 四、Linux环境基础开发工具 Linux小程序—进度条 上篇我们实现了一个简易的进度条,不过那仅仅是测试,接下来我们真正的正式实现一个进度条。 接着编写 processbar.c 文件 然…

web刷题记录(4)

[GKCTF 2020]cve版签到 进来应该是给了个提示了,就是要以.ctfhub.com结尾 还有一个超链接,这题的ssrf还是挺明显的,抓包看看 发现回显里面有提示 说是和本地有关,那么也就是说,要访问127.0.0.1,大概意思就…

ModuleNotFoundError: No module named ‘torch_scatter‘

大概率是cuda的版本问题,看了很多解决方案,都不舒服。 直到看到这篇 新建一个名字叫torch_scatter.py的脚本,然后就可以调用本地的脚本了。 #torch_scatter.py import torch from typing import Optionaldef scatter_sum(src: torch.Tenso…

【POSIX】运行时so库动态加载

运行时可以自己自定义so库的动态加载框架&#xff0c;主动去加载某些库&#xff0c;并调用其中的某些方法 首先写一些方法&#xff0c;并生成so库 // hello.cpp#include <iostream>/*使用 nm 命令查看 so 库的内容 */// 1. 使用extern // dlsym(handle, "hello&qu…

镜头效果技术在AI绘画中的革新作用

随着人工智能技术的飞速发展&#xff0c;AI绘画已经成为艺术与科技交汇的前沿领域。在这一领域中&#xff0c;镜头效果技术的应用不仅为艺术家和设计师们提供了全新的创作工具&#xff0c;更在艺术创作中扮演了革命性的角色。本文将深入探讨镜头效果技术在AI绘画中的应用&#…