pytorch 今日小知识3——nn.MaxPool3d 、nn.AdaptiveAvgPool3d、nn.ModuleList

MaxPool3d — PyTorch 2.2 documentation

假设输入维度(1,2,3,4,4)

maxpool = torch.nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2), padding=(1, 0, 0))

 F 维的 kernel_size 为 2,说明在 F 维的覆盖的 frame 数为 2,也就是每次有 2 个 frame 加入运算。

F 维的 stride 为 2,说明每次的跨度为 2。

  • padding

F 维的 padding 为 1,说明需要在 F 维做 padding,也就是会在输入的输入之前和之后各做 1 个 frame 的padding。

 

2。nn.AdaptiveAvgPool3d()是一个自适应的三维平均池化层,它对输入的立体数据进行降采样,并允许动态地指定输出的目标大小。
不同于nn.AvgPool3d()需要手动指定池化窗口大小,nn.AdaptiveAvgPool3d()直接指定输出的目标大小。它会根据目标输出大小自适应地调整池化窗口的大小,以保证输出的大小和目标大小一致。

import torch
import torch.nn as nn# 创建一个 AdaptiveAvgPool3d 层,指定目标输出大小为 (2, 2, 2)
pool = nn.AdaptiveAvgPool3d((2, 2, 2))# 输入数据,假设输入大小为 [batch_size, channels, depth, height, width]
input_data = torch.randn(1, 1, 4, 4, 4)  # 示例输入数据# 对输入数据进行自适应池化操作
output = pool(input_data)print(output.shape)

3.在复现代码过程中遇到了 

self.hpp = nn.ModuleList([GeMHPP(bin_num=[1]) for i in range(self.m)])

就学习了nn.moduleList这个函数

nn.ModuleList,它是一个储存不同 module,并自动将每个 module 的 parameters 添加到网络之中的容器。你可以把任意 nn.Module 的子类 (比如 nn.Conv2d, nn.Linear 之类的) 加到这个 list 里面,方法和 Python 自带的 list 一样,无非是 extend,append 等操作。但不同于一般的 list,加入到 nn.ModuleList 里面的 module 是会自动注册到整个网络上的,同时 module 的 parameters 也会自动添加到整个网络中

class net4(nn.Module):def __init__(self):super(net4, self).__init__()layers = [nn.Linear(10, 10) for i in range(5)]self.linears = nn.ModuleList(layers)def forward(self, x):for layer in self.linears:x = layer(x)return xnet = net4()
print(net)

 

 

nn.Sequential内部实现了forward函数,因此可以不用写forward函数。而nn.ModuleList则没有实现内部forward函数

seq = nn.Sequential(nn.Conv2d(1,20,5),nn.ReLU(),nn.Conv2d(20,64,5),nn.ReLU())
print(seq)
# Sequential(
#   (0): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))
#   (1): ReLU()
#   (2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))
#   (3): ReLU()
# )#对上述seq进行输入
input = torch.randn(16, 1, 20, 20)
print(seq(input))
#torch.Size([16, 64, 12, 12])

参考

详解PyTorch中的ModuleList和Sequential - 知乎 (zhihu.com)

 3D 池化(MaxPool3D) 和 3D(Conv3d) 卷积详解-CSDN博客

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

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

相关文章

什么是上位机?入门指南

什么是上位机? 上位机(SCADA,Supervisory Control and Data Acquisition)是一种软件系统,用于监控和控制工业过程中的设备。它通常与传感器、执行器和其他自动化设备一起工作,以实时地监视过程状态、收集数…

JavaScript 高性能编程 —— 加载和运行

JavaScript 在浏览器中的性能,可认为是开发者所要面对的最重要的可用性问题。此问题因 JavaScript 的阻塞特征而复杂,也就是说,当 JavaScript 运行时其他的事情不能被浏览器处理。 事实上,大多数浏览 器使用单进程处理 UI 更新和 JavaScript 运行等多个任务,而同一时间只能…

正在海外乘风破浪的扫地机器人,手握怎样的发展利器?

“懒人经济”能造就多大的市场,可以从扫地机器人行业的发展窥见。 据国际数据分析机构捷孚凯报告,截至2022年底,我国扫地机器人已占据50%以上的海外市场份额。其中,科沃斯、石头科技等头部企业成为出海的“主力军”。 以石头科技…

C语言【整数与浮点数的存储区别】

例题引入 #include <stdio.h> int main() {int n 9;float* pFloat (float*)&n;printf("n的值为&#xff1a;%d\n",n);printf("*pFloat的值为&#xff1a;%f\n",*pFloat);*pFloat 9.0;printf("num的值为&#xff1a;%d\n",n);print…

【十一】MyBatis Plus 原理分析

MyBatis Plus 原理分析 摘要 Java EE开发中必不可少ORM框架&#xff0c;目前行业里最流行的orm框架非Mybatis莫属了&#xff0c;而Mybatis框架本身没有提供api实现&#xff0c;所以市面上推出了Mybatis plus系列框架&#xff0c;plus版是mybatis增强工具&#xff0c;用于简化My…

卷积神经网络的结构组成与解释(详细介绍)

文章目录 前言 1、卷积层 2、激活层 3、BN层 4、池化层 5、FC层&#xff08;全连接层&#xff09; 6、损失层 7、Dropout层 8、优化器 9、学习率 10、卷积神经网络的常见结构 前言 卷积神经网络是以卷积层为主的深层网络结构&#xff0c;网络结构包括有卷积层、激活层、BN层、…

Redis中的事务(二)

事务 事务的实现 执行事务 当一个处于事务状态的客户端向服务器发送EXEC命令时&#xff0c;这个EXEC命令将立即被服务器执行&#xff0c;服务器会遍历这个客户端的事务队列&#xff0c;执行队列中保存的所有命令&#xff0c;最后将执行命令所得的结果全部返回给客户端。 例…

Linux之bpfjit(2)使用分析和mini-tcpdump实现

Linux之bpfjit(2)使用分析和mini-tcpdump实现 Author: Once Day Date: 2024年4月13日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可以参考专栏&#xff1a;…

面向对象的C++题目以及解法2

01串排序 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; class String { public:string str; String(const string& s) : str(s) {} int length() const {return str.length();}i…

基于栈求解迷宫的单条路径和所有路径

数据结构与算法课的一个实验&#xff0c;记录一下。 单纯想要了解利用栈求解迷宫的算法可以直接跳转到相应的小标题。 完整代码链接code_2024/mazeLab LeePlace_OUC/code - 码云 - 开源中国 (gitee.com) 文章目录 要求栈的实现MazeType类型的组织迷宫的初始化和销毁打印路径…

QFS [VLDB‘13] 论文阅读笔记

原论文&#xff1a;The Quantcast File System (VLDB’13) QFS简介及技术要点 QFS&#xff08;Quantcast File System&#xff09;是由Quantcast开发的一个高效、可扩展的分布式文件系统&#xff0c;旨在提供与Hadoop分布式文件系统&#xff08;HDFS&#xff09;兼容的替代方案…

C++11(下篇)

文章目录 C111. 模版的可变参数1.1 模版参数包的使用 2. lambda表达式2.1 Lambda表达式语法捕获列表说明 2.2 lambda的底层 3. 包装器3.1 function包装器3.2 bind 4. 线程库4.1 thread类4.2 mutex类4.3 atomic类4.4 condition_variable类 C11 1. 模版的可变参数 C11支持模版的…