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解释执行原理分析
Aug 22 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
python字符串string的内置方法实例详解
May 14 Python
Python 实现两个服务器之间文件的上传方法
Feb 13 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
在Python 的线程中运行协程的方法
Feb 24 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
python实现简单反弹球游戏
Apr 12 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
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JavaScript null和undefined区别分析
2009/10/14 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
Python实现的计数排序算法示例
2017/11/29 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
python中spy++的使用超详细教程
2021/01/29 Python
平面设计自荐信
2013/10/07 职场文书
工作的心得体会
2013/12/31 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
党员批评与自我批评
2014/10/15 职场文书
MySQL视图概念以及相关应用
2022/04/19 MySQL