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实现删除Android工程中的冗余字符串
Jan 19 Python
Python易忽视知识点小结
May 25 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 Python
tensorflow实现简单的卷积神经网络
May 24 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
Python短信轰炸的代码
Mar 25 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
Python return语句如何实现结果返回调用
Oct 15 Python
怎么用Python识别手势数字
Jun 07 Python
Python Pygame实战之塔防游戏的实现
Mar 17 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 事件机制(2)
2011/03/23 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
express启用https使用小记
2019/05/21 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
应届生高等护理求职信
2013/10/12 职场文书
护理专业自荐信范文
2014/02/26 职场文书
高中生的自我评价
2014/03/04 职场文书
关于读书的演讲稿
2014/05/07 职场文书
学生检讨书怎么写
2014/10/09 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
基于redis+lua进行限流的方法
2022/07/23 Redis