pytorch中的nn.Unfold()函数和fold(函数详解
文章目录
- 1.nn.Unfold()函数
- 2.nn.Fold()函数
1.nn.Unfold()函数
描述:pytorch中的nn.Unfold()函数,在图像处理领域,经常需要用到卷积操作,但是有时我们只需要在图片上进行滑动的窗口操作,将图片切割成patch,而不需要进行卷积核和图片值的卷积乘法操作。这是就需要用到nn.Unfold()函数,该函数是从一个batch图片中,提取出滑动的局部区域块,也就是卷积操作中的提取kernel filter对应的滑动窗口。
torch.nn.Unfold(kernel_size,dilation=1,paddding=0,stride=1)
该函数的输入是(bs,c,h,w),其中bs为batch-size,C是channel的个数。
而该函数的输出是(bs,Cxkernel_size[0]xkernel_size[1],L)其中L是特征图或者图片的尺寸根据kernel_size的长宽滑动裁剪后得到的多个patch的数量。
import torch.nn as nn
import torch
batches_img=torch.rand(1,2,4,4)#模拟图片数据(bs,2,4,4),通道数C为2
print("batches_img:\n",batches_img)nn_Unfold=nn.Unfold(kernel_size=(2,2),dilation=1,padding=0,stride=2)
patche_img=nn_Unfold(batches_img)
print("patche_img.shape:",patche_img.shape)
print("patch_img:\n",patche_img)
该方法的主要应用场景是将图片切割成不同的patch,配合一下代码实现
#上面的代码能够获取到patch_img,(bs,C*K*K,L),L代表的是将每张图片分割成多少块
reshape_patche_img=patche_img.view(batches_img.shape[0],batches_img.shape[1],2,2,-1)
print(reshape_patche_img.shape)#[bs, C, k, k, L]
reshape_patche_img=reshape_patche_img.permute(0,4,1,2,3)#[N, L, C, k, k]
print(reshape_patche_img.shape)
结果:
2.nn.Fold()函数
该函数是nn.Unfold()函数的逆操作。
fold = torch.nn.Fold(output_size=(4, 4), kernel_size=(2, 2), stride=2)
inputs_restore = fold(patches)
print(inputs_restore)
print(inputs_restore.size())
pytorch中的nn.Unfold()函数和fold(函数详解相关推荐
- Pytorch中的nn.Unfold()和nn.Fold()详解
1. nn.Unfold()函数 描述:pytorch中的nn.Unfold()函数,在图像处理领域,经常需要用到卷积操作,但是有时我们只需要在图片上进行滑动的窗口操作,将图片切割成patch,而不需 ...
- 在PyTorch中进行双线性采样:原理和代码详解
↑ 点击蓝字 关注视学算法 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/257958558 编辑丨极市平台 在pytorch中的双线性采样(Bilinear Sa ...
- Pytorch 中的数据类型 torch.utils.data.DataLoader 参数详解
DataLoader是PyTorch中的一种数据类型,它定义了如何读取数据方式.详情也可参考本博主的另一篇关于torch.utils.data.DataLoader(https://blog.csdn ...
- PyTorch中的nn.Conv1d与nn.Conv2d
本文主要介绍PyTorch中的nn.Conv1d和nn.Conv2d方法,并给出相应代码示例,加深理解. 一维卷积nn.Conv1d 一般来说,一维卷积nn.Conv1d用于文本数据,只对宽度进行卷积 ...
- Pytorch中torch.nn.Softmax的dim参数含义
自己搞了一晚上终于搞明白了,下文说的很透彻,做个记录,方便以后翻阅 Pytorch中torch.nn.Softmax的dim参数含义
- pytorch中的nn.Bilinear
参考:pytorch中的nn.Bilinear的计算原理详解 代码实现 使用numpy实现Bilinear(来自参考资料): print('learn nn.Bilinear') m = nn.Bil ...
- 在python中使用关键字define定义函数_python自定义函数def的应用详解
这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...
- python中tile的用法_python3中numpy函数tile的用法详解
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...
- python中的json函数_python中装饰器、内置函数、json的详解
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- python scatter参数详解_Python中scatter函数参数及用法详解
最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...
最新文章
- lstm 和自注意力机制 bert 本质区别的思考历程
- WebGame 客户端 美术资源处理之PNG批量导出SWF
- 记一次Linux修改MySQL配置不生效的问题
- Sql Server参数化查询之where in和like实现之xml和DataTable传参
- 5 呼吸灯verilog与Systemverilog编码
- Android 中文API (65) —— BluetoothClass[蓝牙]
- 3分钟看懂 Linux 磁盘划分
- PPAPI nacl_sdk安装
- 【附源码】计算机毕业设计JAVA家庭记账系统
- 计算机画图调整画笔粗细,【2人回答】画图里画笔怎么加粗-3D溜溜网
- python第三章_Python学习(第三章)
- 入职培训ppt计算机二级,计算机二级office试题PPT.doc
- 200套工作室设计行业响应式Html5模板HTML5+CSS3设计网站模板简洁设计师作品展示响应式模板整洁扁平宽屏CSS3网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机se
- Chrome-扩展程序无法认证
- 【很逗,很经典】【与靠谱IT男的浪漫闪婚记】——转个很可爱的帖子,貌似男女猪脚是咱IT人士呢
- 【javasim】一个java下的建模仿真平台
- Delphi7.0破解及常用三方控件的安装
- 数据结构与算法分析Java语言描述 原书超清第3版 下载
- 清华大学出版社2013第三期书评征集图书列表
- 图扑软件智慧风电:数字孪生 3D 风机智能设备运维
热门文章
- mysql-mmm架构深度详解
- [源码和文档分享]基于QT的英文文献的编辑与检索系统的实现
- 由“外”向“内”,安踏破解运动科技“卡脖子”难题
- python 获取图像亮度和锐度,pytesseract 获取图片上字符串,及增加亮度,色感,对比度,锐度...
- Solidity动态数组汇编开发教程
- sox处理mp3_sox :音频文件转换命令
- C#实现语音朗读功能
- DaDa英语怎么样,给孩子报名哒哒英语上课好不好?
- Rhythmbox中文乱码解决办法
- Python数据分析基础(2)