直观理解 torch.nn.Unfold
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相关推荐
- PyTorch基础(13)-- torch.nn.Unfold()方法
前言 最近在看新论文的过程中,发现新论文中的代码非常简洁,只用了unfold和fold方法便高效的将论文的思想表达出,因此学习记录一下unfold和fold方法. 一.方法详解 方法 torch.nn ...
- torch.nn.Unfold()详细解释
torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) 功能:从一个批次的输入张量中提取出滑动的局部区域块.(Extracts sl ...
- torch.nn.Unfold类
PyTorch中torch.nn.Unfold类 官方文档连接:torch.nn.Unfold类. class torch.nn.Unfold(kernel_size, dilation=1, pad ...
- 深入理解 TORCH.NN
原文地址:WHAT IS TORCH.NN REALLY? 本人英语学渣,如有错误请及时指出以便更正,使用的源码可点击原文地址进行下载. pytorch提供了许多优雅的类和模块帮助我们构建与训练网络, ...
- Pytorch之深入理解torch.nn.Parameter()
先看一段代码: import torch import torch.nn as nn a=torch.tensor([1,2],dtype=torch.float32) print(a) print( ...
- torch.nn.functional.unfold 用法解读
torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) 参数 kernel_size,滑动窗口的大小 dilation,和空洞卷积中 ...
- Pytorch中的nn.Unfold()和nn.Fold()详解
1. nn.Unfold()函数 描述:pytorch中的nn.Unfold()函数,在图像处理领域,经常需要用到卷积操作,但是有时我们只需要在图片上进行滑动的窗口操作,将图片切割成patch,而不需 ...
- pytorch笔记:torch.nn.functional.pad
1 torch.nn.functional.pad函数 torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充 torch. ...
- torch.nn、(一)
参考 torch.nn.(一) - 云+社区 - 腾讯云 目录 torch.nn Parameters Containers Module Sequential ModuleList ModuleDi ...
最新文章
- SpringBoot使用velocity模板引擎
- 【机器学习】最大熵模型(Maximum Entropy Model)
- SAP Spartacus LockFocusDirective的单步调试
- 变形金刚2_变形金刚(
- Linux命令行参数前加--,-和不加杠
- PoE交换机不供电了该怎么办?
- windows 下安装Python easy_install 和pip
- 有软件开发,就要有软件测试!
- IDC商人应不应该给客户提供服务器测试?```
- UVa 253 Cube paiting
- es5 html片段拼接,es5的 reduce怎样用在拼接html字符串??? - 社区 - 妙味课堂
- qtp 连接mysql_QTP连接MySQL
- 数据结构(C语言)-数组
- 程序员辉辉想裸辞,但又不太敢
- 30_Python基础_异常
- 纸壳CMS升级.Net5免费下载
- 大数据开发之在idea中开发第一个hadoop程序
- java导出excel 方式_java导出Excel通用方法
- day3----部署duboo微服务值部署zk和Jenkins(3)
- HI3516DV300 图像输入