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爬取csdn博客访问量
Feb 14 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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 操作调试的方法
2012/07/12 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
最基础的Python的socket编程入门教程
2015/04/23 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
Python Lambda函数使用总结详解
2019/12/11 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
关于python中导入文件到list的问题
2020/10/31 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
c语言常见笔试题总结
2016/09/05 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
捐款倡议书范文
2014/02/02 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书