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

news/2024/10/22 12:32:18/

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.ppmy.cn/news/1425777.html

相关文章

德国公司营业执照申请

德国市场的巨大潜力吸引着全世界的投资者和创业家纷至沓来。众多企业按奈不住想要开辟德国市场,首先就是要注册德国公司,方便抢占德国或者欧洲市场。 德国公司注册条件 1、对在德国注册公司名称进行核名,拟定至少3个公司名称备选&#xff0…

【软考】系统集成项目管理工程师【第二版】

👊重要通知👊 👊 1. 2024年中考上半年取消,改下半年👊 👊 2. 2024下半年 使用《系统集成项目管理工程师教程》第三版👊 👊 3. 为了方便大家学习,博主正在整理第三版 &am…

vue的就地更新与v-for的key属性

vue的就地更新 Vue中的就地更新到底是怎么回事,为什么会存在就地更新的现象? 注意下面的例子,使用v-for指令时,没有绑定key值,才有就地更新的现象,因为Vue默认按照就地更新的策略来更新v-for渲染的元素列表…

Cesium简单案例

一、Cesium组件 1、HTML <template><div id"cesiumContainer"><!-- 地图工具栏 --><ul class"mapTools"><li v-for"item in toolsData" :key"item.id" click"toolsClick(item)"><!-- 显…

【Maven】使用Maven创建模块的详细过程

在Maven中&#xff0c;通常会有一个父项目&#xff08;parent project&#xff09;和多个子模块&#xff08;submodules&#xff09;。父项目用于定义整个项目范围内的配置&#xff0c;如依赖管理、插件配置等&#xff0c;而子模块则是具体的执行单元。以下是详细的步骤和一些实…

Apache Tomcat 简单使用

Apache Tomcat 下载 download Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。 支持JDK版本 JDK8 要下载tomcat 9.0.x版本 …

Vue的图片懒加载 vue-lazyload插件使用

图片懒加载是一种网页性能优化技术&#xff0c;页面加载时仅加载可见区域内的图像&#xff0c;图像只会在用户滚动或浏览到它们时才会被加载&#xff0c;而不是在页面一开始就全部加载。 优点 可以减少首页首次加载的数量&#xff0c;减少服务器的压力有占位图片来展示预加载动…

rman 归档备份 archived log 不重复备份

11.2.0.3数据库环境&#xff0c;使用rman进行归档日志备份&#xff0c;想实现&#xff1a; (1)每天备份归档日志&#xff0c;备份完并不删除归档日志 (2)归档日志备份成功一次之后&#xff0c;下次再备份的时候rman就自动不会再次备份这个归档日志 这个需求可以通过 backup …