pytorch 中pad函数toch.nn.functional.pad()的用法


Posted in Python onJanuary 08, 2020

padding操作是给图像外围加像素点。

为了实际说明操作过程,这里我们使用一张实际的图片来做一下处理。

pytorch 中pad函数toch.nn.functional.pad()的用法

这张图片是大小是(256,256),使用pad来给它加上一个黑色的边框。具体代码如下:

import torch.nn,functional as F
import torch
from PIL import Image
im=Image.open("heibai.jpg",'r')

X=torch.Tensor(np.asarray(im))
print("shape:",X.shape)
dim=(10,10,10,10)
X=F.pad(X,dim,"constant",value=0)

padX=X.data.numpy()
padim=Image.fromarray(padX)
padim=padim.convert("RGB")#这里必须转为RGB不然会

padim.save("padded.jpg","jpeg")
padim.show()
print("shape:",padX.shape)

输出:

shape: torch.Size([256, 256])
shape: (276, 276)

可以看出给原图四个方向给加上10维度的0,维度变为256+10+10得到的图像如下:

pytorch 中pad函数toch.nn.functional.pad()的用法

我们在举几个简单例子:

x=np.asarray([[[1,2],[1,2]]])
X=torch.Tensor(x)
print(X.shape)
pad_dims = (
          2, 2,
          2, 2,
          1, 1,

        )
X=F.pad(X,pad_dims,"constant")
print(X.shape)
print(X)

输出:

torch.Size([1, 2, 2])
torch.Size([3, 6, 6])
tensor([[[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]],

    [[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 1., 2., 0., 0.],
     [ 0., 0., 1., 2., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]],

    [[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]]])

可以知若pid_sim为(2,2,2,2,1,1)则原维度变化是2+2+2=6,1+1+1=3.也就是第一个(2,2) pad的是最后一个维度,第二个(2,2)pad是倒数第二个维度,第三个(1,1)pad是第一个维度。

再举一个四维度的,但是只pad三个维度:

x=np.asarray([[[[1,2],[1,2]]]])
X=torch.Tensor(x)#(1,2,2)
print(X.shape)
pad_dims = (
          2, 2,
          2, 2,
          1, 1,

        )
X=F.pad(X,pad_dims,"constant")#(1,1,12,12)
print(X.shape)
print(X)

输出:

torch.Size([1, 1, 2, 2])
torch.Size([1, 3, 6, 6])
tensor([[[[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]],

     [[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 1., 2., 0., 0.],
     [ 0., 0., 1., 2., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]],

     [[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]]]])

再举一个四维度的,pad四个维度:

x=np.asarray([[[[1,2],[1,2]]]])
X=torch.Tensor(x)#(1,2,2)
print(X.shape)
pad_dims = (
          2, 2,
          2, 2,
          1, 1,
          2, 2

        )
X=F.pad(X,pad_dims,"constant")#(1,1,12,12)
print(X.shape)
print(X)

输出:

torch.Size([1, 1, 2, 2])
torch.Size([5, 3, 6, 6])
tensor([[[[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]],

     [[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]],

     [[ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.],
     [ 0., 0., 0., 0., 0., 0.]]],


.........太多了

以上这篇pytorch 中pad函数toch.nn.functional.pad()的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python引用(import)文件夹下的py文件的方法
Aug 26 Python
Python中的单继承与多继承实例分析
May 10 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
基于python实现可视化生成二维码工具
Jul 08 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
pycharm激活码有效到2020年11月底
Sep 18 #Python
pymysql的简单封装代码实例
Jan 08 #Python
pytorch使用 to 进行类型转换方式
Jan 08 #Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 #Python
Pytorch to(device)用法
Jan 08 #Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 #Python
Python语言异常处理测试过程解析
Jan 08 #Python
You might like
用PHP发电子邮件
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
wxPython窗口的继承机制实例分析
2014/09/28 Python
Python中异常重试的解决方案详解
2017/05/05 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python编写一个闹钟功能
2017/07/11 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
Python pandas用法最全整理
2019/08/04 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python 没有main函数的原因
2020/07/10 Python
2014年小学植树节活动方案
2014/03/02 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
导游词之凤凰古城
2019/10/22 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Golang的继承模拟实例
2021/06/30 Golang
工厂无线对讲系统解决方案
2022/02/18 无线电