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简单实现控制电脑的方法
Jan 22 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
python 内置模块详解
Jan 01 Python
python+pygame实现坦克大战
Sep 10 Python
详解Python绘图Turtle库
Oct 12 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 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获取网站域名和地址的代码
2008/08/17 PHP
php 日期时间处理函数小结
2009/12/18 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
javascript 闭包
2011/09/15 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Python格式化日期时间操作示例
2018/06/28 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
Hotels.com中国区:好订网
2016/08/18 全球购物
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
外企求职信范文分享
2013/12/31 职场文书
自荐信的基本格式
2014/02/22 职场文书
专业技术职务聘任书
2014/03/29 职场文书
小学生新年寄语
2014/04/03 职场文书
小学生安全责任书
2014/07/25 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis