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导入oracle数据的方法
Jul 10 Python
python中input()与raw_input()的区别分析
Feb 27 Python
基于Django用户认证系统详解
Feb 21 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
Python线程障碍对象Barrier原理详解
Dec 02 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
python matplotlib包图像配色方案分享
Mar 14 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
python使用布隆过滤器的实现示例
Aug 20 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
cache_lite试用
2007/02/14 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
jQuery Ajax使用 全解析
2010/12/15 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
python基础知识小结之集合
2015/11/25 Python
python数据处理实战(必看篇)
2017/06/11 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python使用Pygame绘制时钟
2020/11/29 Python
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
党员十八大心得体会
2014/09/12 职场文书
团结友爱主题班会
2015/08/13 职场文书