torch.nn.Unfold 是把batch中的数据按 C、Kernel_W、Kernel_H 打包,详细解释参考:

PyTorch中torch.nn.functional.unfold函数使用详解

本文主要是把 Unfold 返回的tensor的中间部分还原成 patches。

# -*- coding:utf-8 -*-
import cv2
import torch
import numpy as npimg1 = cv2.imread('../128128/1.png')
img2 = cv2.imread('../128128/2.png')batch = torch.tensor([img1, img2]).permute(0,3,1,2)
print(batch.shape) # [2,3,128,128]hor_block_num = 2
ver_block_num = 4n,c,h,w = batch.shapeassert not h%ver_block_num
assert not w%hor_block_numpatch_h, patch_w = h//ver_block_num, w//hor_block_numuse_unfold = True
if (not use_unfold):# 方法一patches = batch.view(n, c, ver_block_num, patch_h, hor_block_num, patch_w)print(patches.shape) # [2,3,4,32,2,64]patches = patches.permute(0,2,4,3,5,1)print(patches.shape) # [2,4,2,32,64,3]
else:# 方法二split_block = torch.nn.Unfold(kernel_size=(patch_h, patch_w), stride=(patch_h, patch_w))patches = split_block(batch.float())print(patches.shape) # [2,6144,8]patches = patches.permute(0,2,1).view(n,ver_block_num,hor_block_num,-1,patch_h,patch_w)print(patches.shape) # [2,4,2,3,32,64]patches = patches.permute(0,1,2,4,5,3).byte()print(patches.shape) # [2,4,2,32,64,3]# 保存patch
for i in range(patches.shape[0]):img = patches[i]    for y in range(ver_block_num):for x in range(hor_block_num):patch_filename = '../128128/%d_y%d_x%d.png'%(i+1,y,x)patch = img[y,x].numpy()cv2.imwrite(patch_filename, patch)

效果如下:

直观理解 torch.nn.Unfold相关推荐

  1. PyTorch基础(13)-- torch.nn.Unfold()方法

    前言 最近在看新论文的过程中,发现新论文中的代码非常简洁,只用了unfold和fold方法便高效的将论文的思想表达出,因此学习记录一下unfold和fold方法. 一.方法详解 方法 torch.nn ...

  2. torch.nn.Unfold()详细解释

    torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) 功能:从一个批次的输入张量中提取出滑动的局部区域块.(Extracts sl ...

  3. torch.nn.Unfold类

    PyTorch中torch.nn.Unfold类 官方文档连接:torch.nn.Unfold类. class torch.nn.Unfold(kernel_size, dilation=1, pad ...

  4. 深入理解 TORCH.NN

    原文地址:WHAT IS TORCH.NN REALLY? 本人英语学渣,如有错误请及时指出以便更正,使用的源码可点击原文地址进行下载. pytorch提供了许多优雅的类和模块帮助我们构建与训练网络, ...

  5. Pytorch之深入理解torch.nn.Parameter()

    先看一段代码: import torch import torch.nn as nn a=torch.tensor([1,2],dtype=torch.float32) print(a) print( ...

  6. torch.nn.functional.unfold 用法解读

    torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) 参数 kernel_size,滑动窗口的大小 dilation,和空洞卷积中 ...

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

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

  8. pytorch笔记:torch.nn.functional.pad

    1 torch.nn.functional.pad函数 torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充 torch. ...

  9. torch.nn、(一)

    参考 torch.nn.(一) - 云+社区 - 腾讯云 目录 torch.nn Parameters Containers Module Sequential ModuleList ModuleDi ...

最新文章

  1. SpringBoot使用velocity模板引擎
  2. 【机器学习】最大熵模型(Maximum Entropy Model)
  3. SAP Spartacus LockFocusDirective的单步调试
  4. 变形金刚2_变形金刚(
  5. Linux命令行参数前加--,-和不加杠
  6. PoE交换机不供电了该怎么办?
  7. windows 下安装Python easy_install 和pip
  8. 有软件开发,就要有软件测试!
  9. IDC商人应不应该给客户提供服务器测试?```
  10. UVa 253 Cube paiting
  11. es5 html片段拼接,es5的 reduce怎样用在拼接html字符串??? - 社区 - 妙味课堂
  12. qtp 连接mysql_QTP连接MySQL
  13. 数据结构(C语言)-数组
  14. 程序员辉辉想裸辞,但又不太敢
  15. 30_Python基础_异常
  16. 纸壳CMS升级.Net5免费下载
  17. 大数据开发之在idea中开发第一个hadoop程序
  18. java导出excel 方式_java导出Excel通用方法
  19. day3----部署duboo微服务值部署zk和Jenkins(3)
  20. HI3516DV300 图像输入

热门文章

  1. 异构、同构 异步、同步
  2. java中什么是异构?
  3. 开源IM软件----rabbit
  4. 从风险评估到应急救援,实景三维为抗震减灾提供精细化决策依据
  5. 渡一教育公开课web前端开发JavaScript精英课学习笔记(三)条件语句,循环语句
  6. 使用Remix OS作为X86 Android系统开发OS
  7. 逻辑回归梯度下降推导
  8. LinkCode-最多有多少个点在一条直线上
  9. 我们为什么要去月球“吃土”?
  10. python学什么就业前景好_学python和人工智能就业前景怎么样?哪个薪资高?