1 torch.nn.functional.pad函数

torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充

torch.nn.functional.pad(input, pad, mode='constant', value=0)

2 参数说明

input 需要扩充维度的tensor
pad 扩充维度,用于预先定义出某维度上的扩充参数
mode 扩充方法,’constant‘, ‘reflect’ or ‘replicate’三种模式,分别表示常量,反射,复制
value

扩充时指定补充值

但是value只在mode='constant’有效,即使用value填充在扩充出的新维度位置,而在’reflect’和’replicate’模式下,value不可赋值

3 逐维理解torch.nn.functional.pad

为了方便从可视角度上分析torch.nn.functional.pad的实际效果,我们首先给出一个四维的空值矩阵。【维度分别代表(batchsize, channel, height, width)】

import torch
import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3)
t.size()'''
torch.Size([1, 3, 5, 3])
'''

3.1 扩展一个维度

我们先只观察t的最后两维,即一个5行3列的矩阵

如果torch.nn.functional.pad中第二个参数pad只定义两个参数,表示只对输入矩阵的最后一个维度进行扩充,不会对前面的维度造成任何影响

import torch
import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3)
t.size()
'''
torch.Size([1, 3, 5, 3])
'''p1d = (1, 2)
t1 = F.pad(t, p1d, 'constant', 1)
t1.size()
'''
torch.Size([1, 3, 5, 6])
'''

接下来,从可视化的角度分析一下一维padding。为了方便理解,原始矩阵全为0值,扩充维度全部用1值填充:

通过上图我们可以看到,经过torch.nn.functional.pad后 左侧扩充了1列,右侧扩充了2列,即原始矩阵大小从5×3扩充到5×6,则p1d的参数设置意义为:(左边填充数, 右边填充数)

3.2 扩展两个维度

import torch
import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3)
t.size()
'''
torch.Size([1, 3, 5, 3])
'''p2d = (1, 2, 3, 4)
t2 = F.pad(t4d, p2d, 'constant', 2)
t2.size()
'''
torch.Size([1, 3, 12, 6])
'''

同样地,我们可视化看一下效果:

可以看到,维度左边扩充了一列,右侧扩充了2列;上边扩充了3行,下边扩充了4行。

也就是说,前两个参数对最后一个维度有效,后两个参数对倒数第二维有效。

换句话说,p2d参数的实际意义是:(左边填充数, 右边填充数, 上边填充数, 下边填充数)

3.3 扩展三个维度

import torch
import torch.nn.functional as Ft = torch.empty(1, 3, 5, 3)
t.size()
'''
torch.Size([1, 3, 5, 3])
'''p3d = (1, 2, 3, 4, 5, 6)
t3 = F.pad(t4d, p3d, 'constant', 3)
t3.size()
'''
torch.Size([1, 14, 12, 6])
'''

同样进行可视化

可以看到,前面扩展了5个维度,后面6个维度

所以p3d的实际意义是:(左边填充数, 右边填充数, 上边填充数, 下边填充数, 前边填充数,后边填充数)

4 总结

也就是说,pad参数的意思是:从最后一个维度开始,维度一前一后扩展]

参考文献:PyTorch碎片:F.pad的图文透彻理解_面壁者-CSDN博客_f.pad

pytorch笔记:torch.nn.functional.pad相关推荐

  1. Pytorch之torch.nn.functional.pad函数详解

    torch.nn.functional.pad是PyTorch内置的矩阵填充函数 (1).torch.nn.functional.pad函数详细描述如下: torch.nn.functional.pa ...

  2. 【pytorch】torch.nn.functional.pad的使用

    torch.nn.functional.pad 是对Tensor做padding,输入的参数必须的torch的Tensor 一般地,习惯上会做如下声明 import torch.nn.function ...

  3. torch.nn.functional.pad

    作用 用来对一个tensor进行填充.最典型的就是图片了,原来是2*2的,现在想要变成3*3的,那么就需要填充,此时有很多选择,例如是在原来的右上进行填充还是左下?又或者是左上?等等. 这个函数就可以 ...

  4. torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)

    torch.nn.functional.pad(input, pad, mode='constant', value=0) 填充Tensor. 填充大小: 填充input的某些维度的填充大小从最后一个 ...

  5. mindspore.ops.Pad如何像torch.nn.functional.pad一样可以填充负维度

    torch.nn.functional.pad[x,[-1,-1,-1,-1,]]可以填充负维度,而mindspore.ops.Pad 却不能填充负维度. 但是在官网中写的torch.nn.funct ...

  6. opencv和pytorch中的warp操作函数:cv2.warpAffine, torch.nn.functional.grid_sample, cv2.warpPerspective

    关于图像的warp操作是指利用一个旋转缩放矩阵对图像进行操作. 常见的操作有,平移,绕某个点旋转,缩放. opencv中有getRotationMatrix2D,warpAffine, getAffi ...

  7. torch.nn.functional

    1. 非线性激活函数 torch.nn.functional.threshold(input, threshold, value, inplace=False) torch.nn.functional ...

  8. torch.nn.functional.unfold 用法解读

    torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) 参数 kernel_size,滑动窗口的大小 dilation,和空洞卷积中 ...

  9. KLD Loss( tf.nn.softmax, torch.nn.functional.softmax, log_softmax, kl_div) 计算技巧(一)

    最近在比较不同模型的性能,发现虽然文献中使用的相同的指标,比如KLD.但是数据的处理方式却存在着差异,这会导致最后的数据并不具有直接可比性. 这里记录下,其中的一些值得记住的细节.主要涉及的API包括 ...

最新文章

  1. Java api 入门教程 之 JAVA的IO处理
  2. R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色、在树状图dendrogram中为不同的层次聚类簇配置不同的色彩
  3. CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息
  4. pyqt5讲解2:QPushButton,QRadioButton,QCheckBox
  5. mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程
  6. 清华博士生放弃科研,跑去当中学教师,值得吗?
  7. PowerBI分析Exchange服务器IIS运行日志
  8. [转载] 快速学习-Mybatis框架概述
  9. oracle列转行wm_concat,Oracle列转行函数wm_concat版本不兼容解决方案
  10. UnityGI1:光照烘培
  11. 单片机编程软件很简单(19),keil单片机编程软件3点介绍
  12. 奥维 html api,【教程】在奥维中,个人如何申请天地图API秘钥(手机端操作)
  13. java营销活动动态引擎规则_JAVA规则引擎 Drools 教程
  14. 国内外实行HACCP情况(转载)
  15. 台式计算机如何取消屏幕密码,台式电脑怎么取消锁屏?
  16. MATLAB图像分割——检测交通视频中的汽车目标
  17. 外汇EA量化真的可以赚钱吗?还是新型骗局?
  18. 《零边际成本社会》书中的精髓:零边际成本所引发的共享经济,将颠覆资本主义和社会主义。
  19. 在2016年度山东省计算机技能大赛中,学院在2016年山东省职业院校技能大赛中再获佳绩...
  20. 《数学之美》读后感:看数学之美,悟技术之道

热门文章

  1. CMDB经验分享之 – 剖析CMDB的设计过程
  2. iOS音频播放(一):概述
  3. SQL Server 问题之 排序规则(collation)冲突
  4. 【编程题目】求二叉树中节点的最大距离
  5. Android:理想的框架开发母板——高焕堂
  6. tcp/ip 协议栈Linux内核源码分析九 IPv6分片ip6_fragment 分析
  7. Golang 编译MIPS helloworld程序出现 Illegal instruction 或者helloworld: applet not found 的解决
  8. android+命令行编译,打包生成apk文件,Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包...
  9. html中的input是一个块级元素,input属于什么元素,input是行内块元素吗
  10. java 市场_java市场前景怎样?