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中将字典转换为列表的方法
Sep 21 Python
Python队列的定义与使用方法示例
Jun 24 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
Python实现一个简单的验证码程序
Nov 03 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
在django view中给form传入参数的例子
Jul 19 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
Python类如何定义私有变量
Feb 03 Python
python两种注释用法的示例
Oct 09 Python
python神经网络 使用Keras构建RNN训练
May 04 Python
python语言中pandas字符串分割str.split()函数
Aug 05 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
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
基于php实现的验证码小程序
2016/12/13 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
详解使用nvm安装node.js
2017/07/18 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
丧事主持词大全
2014/04/02 职场文书
讲党性心得体会
2014/09/03 职场文书
处级干部考察材料
2014/12/24 职场文书
房屋认购协议书
2015/01/29 职场文书
六年级语文教学反思
2016/03/03 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技