【torch.nn.PixelShuffle】和 【torch.nn.UnpixelShuffle】
文章目录
- torch.nn.PixelShuffle
- 直观解释
- 官方文档
- torch.nn.PixelUnshuffle
- 直观解释
- 官方文档
torch.nn.PixelShuffle
直观解释
PixelShuffle是一种上采样方法,它将形状为 ( ∗ , C × r 2 , H , W ) (∗, C\times r^2, H, W) (∗,C×r2,H,W)的张量重新排列转换为形状为 ( ∗ , C , H × r , W × r ) (∗, C, H\times r, W\times r) (∗,C,H×r,W×r)的张量:

举个例子
输入的张量大小是(1,8,2,3),PixelShuffle的 缩放因子是r=2。
import torch
ps=torch.nn.PixelShuffle(2)
input=torch.arange(0,48).view(1,8,2,3)
print(input)
output=ps(input)
print(output)
print(output.shape)
如下图可以看到,PixelShuffle是把输入通道按照缩放因子r^2进行划分成8/(2^2)=2 组。
也就是输入的第一组(前4个通道)中的元素,每次间隔r=2 交错排列,合并成输出的第一个通道维度。
输入的第二组(后4个通道)中的元素,每次间隔r=2交错排列,合并成输出通道的第二个维度。
输入的大小为(batchsize,in_channel,in_height,in_width)=(1,8,2,3)
输出的大小为(batchsize,out_channel,out_height,out_width)(1,2,4,6)
各个维度的变化规律如下:
batchsize 不变;
out_channel=in_channel/(r^2)
out_height=in_height*r
out_width=in_width*r

官方文档
CLASS
torch.nn.PixelShuffle(upscale_factor)
-
功能: 把大小为 ( ∗ , C × r 2 , H , W ) (*,C\times r^2,H,W) (∗,C×r2,H,W)的张量重新排列为大小为 ( ∗ , C , H × r , W × r ) (*,C,H\times r,W\times r) (∗,C,H×r,W×r) , 其中 r r r 是 upscale factor 。
这个操作对于实现步长为 1 r \frac {1}{r} r1的efficient sub-pixel convolution有用。
-
参数
- upscale_factor(int) : 增加空间分辨率的因子
-
形状
-
输入: ( ∗ , C i n , H i n , W i n ) (*,C_{in},H_{in},W_{in}) (∗,Cin,Hin,Win) ,其中 ∗ * ∗ 是 0 或者batch大小
-
输出: ( ∗ , C o u t , H o u t , W o u t ) (*,C_{out},H_{out},W_{out}) (∗,Cout,Hout,Wout) , 其中
C out = C in ÷ u p s c a l e _ f a c t o r 2 H out = H in × u p s c a l e _ f a c t o r W out = W in × u p s c a l e _ f a c t o r C_{\text {out }}=C_{\text {in }} \div upscale\_factor ^2 \\ H_{\text {out }}=H_{\text {in }} \times upscale\_factor \\ W_{\text {out }}=W_{\text {in }} \times upscale\_factor Cout =Cin ÷upscale_factor2Hout =Hin ×upscale_factorWout =Win ×upscale_factor
-
-
例子
>>> pixel_shuffle = nn.PixelShuffle(3)
>>> input = torch.randn(1, 9, 4, 4)
>>> output = pixel_shuffle(input)
>>> print(output.size())
torch.Size([1, 1, 12, 12])
torch.nn.PixelUnshuffle
直观解释
PixelUnshuffle就是PixelShuffle的逆操作。
import torch
pus=torch.nn.PixelUnshuffle(2)
input_restore=pus(putput)
print(input_restore)
print(input_restore.shape)
print(input_restore==input) # input_restore和input一样
官方文档
CLASS
torch.nn.PixelUnshuffle(downscale_factor)
-
功能: 是PixelShuffle的逆操作,把大小为 ( ∗ , C , H × r , W × r ) (*,C,H\times r,W\times r) (∗,C,H×r,W×r)的张量重组成大小为 ( ∗ , C × r , H , W ) (*,C\times r,H,W) (∗,C×r,H,W)的张量。其中 r r r 是downscale factor。
-
参数:
downscale_factor (int): 降低空间分辨率的因子。
-
形状:
-
输入: ( ∗ , C i n , H i n , W i n ) (*,C_{in},H_{in},W_{in}) (∗,Cin,Hin,Win), 其中 ∗ * ∗ 是 0 或者batch大小
-
输出: ( ∗ , C o u t , H o u t , W o u t ) (*,C_{out},H_{out},W_{out}) (∗,Cout,Hout,Wout), 其中
C out = C in × downscale _ factor 2 H out = H in ÷ downscale _ factor W out = W in ÷ downscale _ factor \begin{aligned}& C_{\text {out }}=C_{\text {in }} \times \text { downscale } \_ \text {factor }{ }^2 \\& H_{\text {out }}=H_{\text {in }} \div \text { downscale } \_ \text {factor } \\& W_{\text {out }}=W_{\text {in }} \div \text { downscale } \_ \text {factor }\end{aligned} Cout =Cin × downscale _factor 2Hout =Hin ÷ downscale _factor Wout =Win ÷ downscale _factor
-
-
例子
>>> pixel_unshuffle = nn.PixelUnshuffle(3)
>>> input = torch.randn(1, 1, 12, 12)
>>> output = pixel_unshuffle(input)
>>> print(output.size())
torch.Size([1, 9, 4, 4])
相关文章:
【torch.nn.PixelShuffle】和 【torch.nn.UnpixelShuffle】
文章目录 torch.nn.PixelShuffle直观解释官方文档 torch.nn.PixelUnshuffle直观解释官方文档 torch.nn.PixelShuffle 直观解释 PixelShuffle是一种上采样方法,它将形状为 ( ∗ , C r 2 , H , W ) (∗, C\times r^2, H, W) (∗,Cr2,H,W)的张量重新排列转换为形状为…...
Rocky9 KVM网桥的配置
KVM的默认网络模式为NAT,借助宿主机模式上网,现在我们来改成桥接模式,这样外界就可以直接和宿主机里的虚拟机通讯了。 Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。 桥接网络(也叫物理设备共享…...
爬虫013_函数的定义_调用_参数_返回值_局部变量_全局变量---python工作笔记032
然后再来看函数,可以避免重复代码 可以看到定义函数以及调用函数...
将.doc文档的默认打开方式从WPS修改为word office打开方式的具体方法(以win 10 操作系统为例)
将.doc文档的默认打开方式从WPS修改为word office打开方式的具体方法(以win 10 操作系统为例) 随着近几年WPS软件的不断完善和丰富,在某些方面取得了具有特色的优势。在平时编辑.doc文档时候也常常用到wps软件,不过WPS文献也存在…...
如何搭建个人的GPT网页服务
写在前面 在创建个人的 GPT网页之前,我登录了 Git 并尝试了一些开源项目,但是没有找到满足我个性化需求的设计。虽然许多收费的 GPT网页提供了一些免费额度,足够我使用,但是公司的安全策略会屏蔽这些网页。因此,我决定…...
[QCM6125][Android13] 默认关闭SELinux权限
文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: QCM6125 版本: Android 13 kernel: msm-4.14 问题描述 正常智能硬件设备源码开发,到手的第一件事就是默认关闭SELinux权限,这样能够更加方便于调试功能。 解决方法 --- a/QSSI.1…...
【jvm】jvm发展历程
目录 一、Sun Classic VM二、Exact VM三、HotSpot VM四、JRockit五、J9六、KVM、CDC、CLDC七、Azul VM八、Liquid VM九、Apache Harmony十、Microsoft JVM十一、Taobao JVM十二、Dalvik VM 一、Sun Classic VM 1.1996年java1.0版本,sun公司发布了sun classic vm虚拟…...
Dubbo3.0 Demo
将SpringBoot工程集成Dubbo 1.创建父工程 2.创建子工程consumer,provider 3.初始化工程 4.引入依赖 在provider和consumer中引入dubbo依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</a…...
源码分析——ConcurrentHashMap源码+底层数据结构分析
文章目录 1. ConcurrentHashMap 1.71. 存储结构2. 初始化3. put4. 扩容 rehash5. get 2. ConcurrentHashMap 1.81. 存储结构2. 初始化 initTable3. put4. get 3. 总结 1. ConcurrentHashMap 1.7 1. 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图,Concurr…...
R语言中的函数25:paste,paste0
文章目录 介绍paste0()实例 paste()实例 介绍 paste0()和paste()函数都可以实现对字符串的连接,paste0是paste的简化版。 paste0() paste (..., sep " ", collapse NULL, recycle0 FALSE)… one or more R objects, to be converted to character …...
(八)穿越多媒体奇境:探索Streamlit的图像、音频与视频魔法
文章目录 1 前言2 st.image:嵌入图像内容2.1 图像展示与描述2.2 调整图像尺寸2.3 使用本地文件或URL 3 st.audio:嵌入音频内容3.1 播放音频文件3.2 生成音频数据播放 4 st.video:嵌入视频内容4.1 播放视频文件4.2 嵌入在线视频 5 结语&#x…...
CAD练习——绘制房子平面图
首先还是需要设置图层、标注、文字等 XL:构造线 用构造线勾勒大致的轮廓: 使用多线命令:ML 绘制墙壁 可以看到有很多交叉点的位置 用多线编辑工具将交叉点处理 有一部分处理不了的,先讲多线分解,然后用修剪打理&…...
spring 面试题
一、Spring面试题 专题部分 1.1、什么是spring? Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量…...
Springboot项目集成Durid数据源和P6Spy以及dbType not support问题
项目开发阶段,mybatis的SQL打印有占位符,调试起来还是有点麻烦,随想整合P6Spy打印可以直接执行的SQL,方便调试,用的Durid连接池。 Springboot项目集成Durid <dependency><groupId>com.alibaba</group…...
安卓如何卸载应用
卸载系统应用 首先需要打开手机的开发者选项,启动usb调试。 第二步需要在电脑上安装adb命令,喜欢的话还可以将它加入系统path。如果不知道怎么安装,可以从这里下载免安装版本。 第三步将手机与电脑用数据线连接,注意是数据线&a…...
【云原生|Kubernetes】14-DaemonSet资源控制器详解
【云原生|Kubernetes】14-DaemonSet资源控制器详解 文章目录 【云原生|Kubernetes】14-DaemonSet资源控制器详解简介典型用法DaemonSet语法规则Pod模板Pod 选择算符在选定的节点上运行 Pod DaemonSet的 Pods 是如何被调度的污点和容忍度DaemonSet更新和回滚DaemonSet更新策略执…...
基于 Guava Retry 在Spring封装一个重试功能
pom依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.springframework.boot</groupId>…...
适用HarmonyOS 3.1版本及以上的应用及服务开发工具 DevEco Studio 3.1.1 Release 安装
文章目录 安装步骤1.下载安装包2.安装成功后,初次运行studio2.1 配置node与ohpm的环境2.2安装sdk2.3等待安装结束 3.创建项目3.1 点击Create Project3.2 选择一个空项目3.3 项目配置3.4 Finish、等待依赖下载完毕3.5 项目创建完成 tip 提示4.配置运行环境4.1 真机运…...
[信号与系统系列] 正弦振幅调制之差拍信号
当将具有不同频率的两个正弦曲线相乘时,可以创建一个有趣的音频效果,称为差拍音符。这种现象听起来像颤音,最好通过选择一个频率非常小的信号与和另一个频率大约1KHz的信号,把二者混合从而听到。一些乐器能够自然产生差拍音符。使…...
vb+SQL航空公司管理系统设计与实现
航空公司管理信息系统 一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。 本设计讲述如何建立一个航空公司管理信…...
统一支付网关架构解析:企业级多平台支付集成设计哲学
统一支付网关架构解析:企业级多平台支付集成设计哲学 【免费下载链接】pay 可能是我用过的最优雅的 Alipay/WeChat/Douyin/Unipay/江苏银行 的支付 SDK 扩展包了 项目地址: https://gitcode.com/gh_mirrors/pa/pay 在数字化商业生态中,支付系统作…...
sklearn分类报告看不懂?5分钟搞懂micro和macro的F1差异(附代码示例)
sklearn分类报告看不懂?5分钟搞懂micro和macro的F1差异(附代码示例) 第一次看到sklearn的classification_report输出时,那些密密麻麻的precision、recall、f1-score已经够让人头疼了,更别提最后两行突然冒出的micro和m…...
Embedding微调避坑指南:ms-swift里5种Loss函数到底怎么选?(附数据集格式样例)
Embedding微调实战:ms-swift框架中5种损失函数的深度选择指南 当你在ms-swift框架中进行Embedding模型微调时,损失函数的选择往往决定了整个项目的成败。面对InfoNCE、余弦相似度、对比学习等不同选项,很多开发者都会陷入"选择困难症&qu…...
智能管理解决方案:重新定义《原神》圣遗物自动化处理效率标准
智能管理解决方案:重新定义《原神》圣遗物自动化处理效率标准 【免费下载链接】cocogoat-client A toolbox for Genshin Impact to export artifacts automatically. 支持圣遗物全自动导出的原神工具箱,保证每一行代码都是熬夜加班打造。 项目地址: ht…...
CAN设备选型避坑指南:如何通过“接收压力测试”判断USB-CAN适配器会不会丢帧?
CAN设备选型实战:如何用接收压力测试避开数据丢帧陷阱 当你在自动驾驶原型车的CAN总线监控系统中发现关键故障码丢失,或工业网关的实时数据出现断片时,问题往往出在CAN接口设备的选型失误上。我见过太多团队在项目后期被频繁的丢帧问题困扰&a…...
你的Windows 11真的需要“减肥“吗?Win11Debloat一键解放30%系统资源
你的Windows 11真的需要"减肥"吗?Win11Debloat一键解放30%系统资源 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other chang…...
5分钟快速上手eRPC:从零构建你的第一个RPC服务
5分钟快速上手eRPC:从零构建你的第一个RPC服务 【免费下载链接】erpc An efficient, extensible and easy-to-use RPC framework. 项目地址: https://gitcode.com/gh_mirrors/er/erpc eRPC是一个高效、可扩展且易于使用的RPC框架,让开发者能够快速…...
如何用ViGEmBus在Windows上实现专业级游戏控制:3个简单步骤解锁无限可能
如何用ViGEmBus在Windows上实现专业级游戏控制:3个简单步骤解锁无限可能 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 想要在Windows系统上获得…...
终极WeMod增强器完整指南:零成本解锁专业版特权功能
终极WeMod增强器完整指南:零成本解锁专业版特权功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂订阅费而烦恼吗…...
gte-base-zh开源可部署优势:支持国产昇腾/寒武纪芯片适配路线
gte-base-zh开源可部署优势:支持国产昇腾/寒武纪芯片适配路线 1. 快速了解gte-base-zh模型 gte-base-zh是由阿里巴巴达摩院训练的中文文本嵌入模型,基于BERT框架构建。这个模型专门为中文文本处理设计,能够将文本转换为高质量的向量表示&am…...
