文章目录

  • 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(函数详解相关推荐

  1. Pytorch中的nn.Unfold()和nn.Fold()详解

    1. nn.Unfold()函数 描述:pytorch中的nn.Unfold()函数,在图像处理领域,经常需要用到卷积操作,但是有时我们只需要在图片上进行滑动的窗口操作,将图片切割成patch,而不需 ...

  2. 在PyTorch中进行双线性采样:原理和代码详解

    ↑ 点击蓝字 关注视学算法 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/257958558 编辑丨极市平台 在pytorch中的双线性采样(Bilinear Sa ...

  3. Pytorch 中的数据类型 torch.utils.data.DataLoader 参数详解

    DataLoader是PyTorch中的一种数据类型,它定义了如何读取数据方式.详情也可参考本博主的另一篇关于torch.utils.data.DataLoader(https://blog.csdn ...

  4. PyTorch中的nn.Conv1d与nn.Conv2d

    本文主要介绍PyTorch中的nn.Conv1d和nn.Conv2d方法,并给出相应代码示例,加深理解. 一维卷积nn.Conv1d 一般来说,一维卷积nn.Conv1d用于文本数据,只对宽度进行卷积 ...

  5. Pytorch中torch.nn.Softmax的dim参数含义

    自己搞了一晚上终于搞明白了,下文说的很透彻,做个记录,方便以后翻阅 Pytorch中torch.nn.Softmax的dim参数含义

  6. pytorch中的nn.Bilinear

    参考:pytorch中的nn.Bilinear的计算原理详解 代码实现 使用numpy实现Bilinear(来自参考资料): print('learn nn.Bilinear') m = nn.Bil ...

  7. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  8. python中tile的用法_python3中numpy函数tile的用法详解

    tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...

  9. python中的json函数_python中装饰器、内置函数、json的详解

    装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...

  10. python scatter参数详解_Python中scatter函数参数及用法详解

    最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...

最新文章

  1. lstm 和自注意力机制 bert 本质区别的思考历程
  2. WebGame 客户端 美术资源处理之PNG批量导出SWF
  3. 记一次Linux修改MySQL配置不生效的问题
  4. Sql Server参数化查询之where in和like实现之xml和DataTable传参
  5. 5 呼吸灯verilog与Systemverilog编码
  6. Android 中文API (65) —— BluetoothClass[蓝牙]
  7. 3分钟看懂 Linux 磁盘划分
  8. PPAPI nacl_sdk安装
  9. 【附源码】计算机毕业设计JAVA家庭记账系统
  10. 计算机画图调整画笔粗细,【2人回答】画图里画笔怎么加粗-3D溜溜网
  11. python第三章_Python学习(第三章)
  12. 入职培训ppt计算机二级,计算机二级office试题PPT.doc
  13. 200套工作室设计行业响应式Html5模板HTML5+CSS3设计网站模板简洁设计师作品展示响应式模板整洁扁平宽屏CSS3网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机se
  14. Chrome-扩展程序无法认证
  15. 【很逗,很经典】【与靠谱IT男的浪漫闪婚记】——转个很可爱的帖子,貌似男女猪脚是咱IT人士呢
  16. 【javasim】一个java下的建模仿真平台
  17. Delphi7.0破解及常用三方控件的安装
  18. 数据结构与算法分析Java语言描述 原书超清第3版 下载
  19. 清华大学出版社2013第三期书评征集图书列表
  20. 图扑软件智慧风电:数字孪生 3D 风机智能设备运维

热门文章

  1. mysql-mmm架构深度详解
  2. [源码和文档分享]基于QT的英文文献的编辑与检索系统的实现
  3. 由“外”向“内”,安踏破解运动科技“卡脖子”难题
  4. python 获取图像亮度和锐度,pytesseract 获取图片上字符串,及增加亮度,色感,对比度,锐度...
  5. Solidity动态数组汇编开发教程
  6. sox处理mp3_sox :音频文件转换命令
  7. C#实现语音朗读功能
  8. DaDa英语怎么样,给孩子报名哒哒英语上课好不好?
  9. Rhythmbox中文乱码解决办法
  10. Python数据分析基础(2)