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中使用模块的教程
Apr 27 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
Django实现简单分页功能的方法详解
Dec 05 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
Python读写zip压缩文件的方法
Aug 29 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
Python列表对象实现原理详解
Jul 01 Python
Django中多种重定向方法使用详解
Jul 17 Python
Django--权限Permissions的例子
Aug 28 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 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笔记之常用文件操作
2010/10/12 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
用python制作游戏外挂
2018/01/04 Python
numpy中的高维数组转置实例
2018/04/17 Python
pandas 将索引值相加的方法
2018/11/15 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
Django 重写用户模型的实现
2019/07/29 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
大学生自我鉴定
2013/12/08 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
暑期社会实践感言
2014/02/25 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
端午节演讲稿
2014/05/23 职场文书
场地使用证明模板
2014/10/25 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
图解上海144收音机
2021/04/22 无线电
MySQL库表名大小写的选择
2021/06/05 MySQL
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL