当前位置: 首页 > news >正文

【pytorch】torch.nn.Unfold操作

说明

一个代码里涉及到了unfold的操作,看了半天官网都没整明白维度怎么变化的,参考这个链接搞明白了:
https://blog.csdn.net/ViatorSun/article/details/119940759
https://zhuanlan.zhihu.com/p/361140988

维度计算

输入( N, C, H, W)
输出(N,C×∏(kernel_size),L)
L 是通过卷积核 滑动裁剪 后,得到的区块的数量。

C×∏(kernel_size)是怎么来的?

从第一个参考链接的图可以看到,就是窗口滑动的时候,把窗口同一个位置的值放在了一个通道,所以窗口有多少个像素,就变成了多少个通道。
用参考博客的代码做一个示例:

inputs = torch.randn(1, 2, 4, 4)
print(inputs.size())
print(inputs)
unfold  = torch.nn.Unfold(kernel_size=(2, 2), stride=2)
patches = unfold(inputs)
print(patches.size())
print(patches)

输出结果

torch.Size([1, 2, 4, 4])
tensor([[[[ 0.4448, -1.8525, -1.8243, -1.0243],[ 0.0224, -1.2402, -0.7154, -1.2538],[-0.6515, -0.6022,  0.2263, -1.6286],[ 0.2067,  0.8257, -1.9318,  1.0372]],[[ 2.4799, -0.5248, -0.3170,  1.5934],[-0.3643,  1.1624, -1.5762, -0.1827],[-0.0553,  0.1629, -1.3280, -0.8468],[ 0.0671,  1.6328,  1.1706,  1.7891]]]])
torch.Size([1, 8, 4])
tensor([[[ 0.4448, -1.8243, -0.6515,  0.2263],[-1.8525, -1.0243, -0.6022, -1.6286],[ 0.0224, -0.7154,  0.2067, -1.9318],[-1.2402, -1.2538,  0.8257,  1.0372],[ 2.4799, -0.3170, -0.0553, -1.3280],[-0.5248,  1.5934,  0.1629, -0.8468],[-0.3643, -1.5762,  0.0671,  1.1706],[ 1.1624, -0.1827,  1.6328,  1.7891]]])

用两个窗口的情况来举例,每个位置对应的结果情况如下:
在这里插入图片描述

相关文章:

  • 【自然语言处理与大模型】模型压缩技术之量化
  • 21-算法打卡-哈希表-三数之和-leetcode(15)-第二十一天
  • Spring Data
  • AR行业应用案例与NXP架构的结合
  • C语言 数据结构 【堆】动态模拟实现,堆排序,TOP-K问题
  • 【技术派后端篇】基于 Redis 实现网站 PV/UV 数据统计
  • DeepSeek与多元工具协同:创新应用模式与发展前景探究
  • linux安装mysql数据库
  • PID控制程序编写
  • 【Linux】:UDP协议
  • 使用 WinDbg 启动程序并捕获崩溃转储的完整流程
  • MD5和sha1绕过方式总结
  • 悟空黑桃 下载地址
  • 杰理791ble配网
  • 如何安静?
  • CGAL 计算直线之间的距离(3D)
  • 小天互连与DeepSeek构建企业智能化新生态
  • 博客系统-邮件发送-nginx-服务部署
  • 计算机视觉中的正则化:从理论到实践的全面解析
  • OSPF --- LSA
  • 上海之旅相册②俄罗斯Chaika:客居六年,致上海的情书
  • 云南一季度GDP为7490.99亿元,同比增长4.3%
  • 教育部召开全国中小学幼儿园安全工作视频会议:加强校园安防建设
  • 成都市政府秘书长王忠诚调任遂宁市委副书记
  • 经济大省中川、豫、浙一季报已发:GDP增速均高于全国
  • 徐之凯评《突如其来的勇气》|早熟的抵抗