1)ReflectionPad2d

CLASS torch.nn.ReflectionPad2d(padding)

使用输入边界的反射来填充输入tensor

对于N维的填充,使用torch.nn.functional.pad()

参数:

  • padding(int, tuple):指定填充的大小。如果是一个整数值a,则所有边界都使用相同的填充数,等价于输入(a,a,a,a)。如果是大小为4的元组,则表示 (padding_leftpadding_left, padding_rightpadding_right, padding_toppadding_top, padding_bottompadding_bottom)

形状:

  • 输入:(N,C,Hin​,Win​)
  • 输出:(N,C,Hout​,Wout​)

计算式子为:

  • Hout​=Hin​+padding_top+padding_bottom
  • Wout​=Win​+padding_left+padding_right

举例:

(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN-and-pix2pix user$ python
Python 3.6. |Anaconda, Inc.| (default, Dec , ::)
[GCC 4.2. Compatible Clang 4.0. (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from torch import nn
>>> import torch
>>> m = nn.ReflectionPad2d()
>>> input = torch.arange(, dtype=torch.float).reshape(,,,)
>>> m(input)
tensor([[[[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .]]]]) >>> m = nn.ReflectionPad2d()
>>> m(input)
tensor([[[[., ., ., ., .],
[., ., ., ., .],
[., ., ., ., .],
[., ., ., ., .],
[., ., ., ., .]]]])

从例子可见,填充的值就是对应边界旁边的值,即反射填充

⚠️padding的大小要小于输入的大小,否则报错:

>>> m = nn.ReflectionPad2d()
>>> m(input)
Traceback (most recent call last):
File "<stdin>", line , in <module>
File "/anaconda3/envs/deeplearning/lib/python3.6/site-packages/torch/nn/modules/module.py", line , in __call__
result = self.forward(*input, **kwargs)
File "/anaconda3/envs/deeplearning/lib/python3.6/site-packages/torch/nn/modules/padding.py", line , in forward
return F.pad(input, self.padding, 'reflect')
File "/anaconda3/envs/deeplearning/lib/python3.6/site-packages/torch/nn/functional.py", line , in pad
ret = torch._C._nn.reflection_pad2d(input, pad)
RuntimeError: Argument #: Padding size should be less than the corresponding input dimension, but got: padding (, ) at dimension of input [, , , ]
>>>

2)ReplicationPad2d

CLASS torch.nn.ReplicationPad2d(padding)

使用输入边界的复制值来填充输入tensor

对于N维的填充,使用torch.nn.functional.pad()

参数:

  • padding(int, tuple):指定填充的大小。如果是一个整数值a,则所有边界都使用相同的填充数,等价于输入(a,a,a,a)。如果是大小为4的元组,则表示 (padding_leftpadding_left, padding_rightpadding_right, padding_toppadding_top, padding_bottompadding_bottom)

形状:

  • 输入:(N,C,Hin​,Win​)
  • 输出:(N,C,Hout​,Wout​)

计算式子为:

  • Hout​=Hin​+padding_top+padding_bottom
  • Wout​=Win​+padding_left+padding_right

举例:

>>> m = nn.ReplicationPad2d()
>>> m(input)
tensor([[[[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .]]]])
>>>

可见填充的边界是啥,填充的值就是啥

3)ZeroPad2d

CLASS torch.nn.ZeroPad2d(padding)

使用0填充输入tensor的边界

对于N维的填充,使用torch.nn.functional.pad()

参数:

  • padding(int, tuple):指定填充的大小。如果是一个整数值a,则所有边界都使用相同的填充数,等价于输入(a,a,a,a)。如果是大小为4的元组,则表示 (padding_leftpadding_left, padding_rightpadding_right, padding_toppadding_top, padding_bottompadding_bottom)

形状:

  • 输入:(N,C,Hin​,Win​)
  • 输出:(N,C,Hout​,Wout​)

计算式子为:

  • Hout​=Hin​+padding_top+padding_bottom
  • Wout​=Win​+padding_left+padding_right

举例:

>>> m = nn.ZeroPad2d()
>>> m(input)
tensor([[[[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .],
[., ., ., ., ., ., .]]]])
>>>

ConstantPad2d

CLASS torch.nn.ConstantPad2d(padding, value)

使用一个常量值填充输入tensor边界

对于N维的填充,使用torch.nn.functional.pad()

参数:

  • padding(int, tuple):指定填充的大小。如果是一个整数值a,则所有边界都使用相同的填充数,等价于输入(a,a,a,a)。如果是大小为4的元组,则表示 (padding_leftpadding_left, padding_rightpadding_right, padding_toppadding_top, padding_bottompadding_bottom)
  • value:填充的常量值

形状:

  • 输入:(N,C,Hin​,Win​)
  • 输出:(N,C,Hout​,Wout​)

计算式子为:

  • Hout​=Hin​+padding_top+padding_bottom
  • Wout​=Win​+padding_left+padding_right

举例:

>>> m = nn.ConstantPad2d(,3.99)
>>> m(input)
tensor([[[[3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900],
[3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900],
[3.9900, 3.9900, 0.0000, 1.0000, 2.0000, 3.9900, 3.9900],
[3.9900, 3.9900, 3.0000, 4.0000, 5.0000, 3.9900, 3.9900],
[3.9900, 3.9900, 6.0000, 7.0000, 8.0000, 3.9900, 3.9900],
[3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900],
[3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900, 3.9900]]]])
>>>

pytorch常用的padding函数的更多相关文章

  1. pytorch常用函数总结(持续更新)

    pytorch常用函数总结(持续更新) torch.max(input,dim) 求取指定维度上的最大值,,返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引.比如: demo.sha ...

  2. PyTorch常用代码段整理合集

    PyTorch常用代码段整理合集 转自:知乎 作者:张皓 众所周知,程序猿在写代码时通常会在网上搜索大量资料,其中大部分是代码段.然而,这项工作常常令人心累身疲,耗费大量时间.所以,今天小编转载了知乎 ...

  3. 交叉熵的数学原理及应用——pytorch中的CrossEntropyLoss()函数

    分类问题中,交叉熵函数是比较常用也是比较基础的损失函数,原来就是了解,但一直搞不懂他是怎么来的?为什么交叉熵能够表征真实样本标签和预测概率之间的差值?趁着这次学习把这些概念系统学习了一下. 首先说起交 ...

  4. 常用的WinAPI函数整理

    常用的WinAPI函数整理 一.进程  创建进程:    CreateProcess("C:\\windows\\notepad.exe",0,0,0,0,0,0,0,&s ...

  5. 最常用的截取函数有left,right,substring

    最常用的截取函数有left,right,substring 1.LEFT ( character_expression , integer_expression ) 返回从字符串左边开始指定个数的字符 ...

  6. Appium常用的API函数

    在学习应用一个框架之前,应该了解一下这个框架的整体结构或是相应的API函数.这篇文章还不错:http://blog.sina.com.cn/s/blog_68f262210102vzf9.html,就 ...

  7. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  8. 常用的Sql 函数

    常用的Sql 函数 1: replace 函数,替换字符. 语法 replace (original-string, search-string, replace-string ) 第一个参数你的字符 ...

  9. 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...

随机推荐

  1. 03 c++中this指针

    概念: 成员函数:在类中定义的函数.普通函数无法被继承,成员函数可以被继承.友元函数相当于普通函数. 友元函数不是类的组成,没有this指针,必须将成员函数操作符作为参数传递对象. 在c++中成员函数 ...

  2. 《团队名称》第九次团队作业:Beta冲刺与验收准备

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目冲刺 团队名称 发际线总和我作队 作业学习目标 (1)掌握软件黑盒测试技术:(2)掌握软件 ...

  3. CF1106F Lunar New Year and a Recursive Sequence——矩阵快速幂&&bsgs

    题意 设 $$f_i = \left\{\begin{matrix}1 , \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  i < k\\ ...

  4. greenplum 表在各个节点数据的分布情况

    select gp_segment_id,count(*) from table_name group by gp_segment_id;

  5. YII框架的行为

    一.什么是行为 行为,也称为 mixins,可以无须改变类继承关系即可增强一个已有的类的功能. 当一个对象或类被注入某些行为后,这个对象可以像访问自己定义的方法和属性一样访问注入进来的方法和属性. 二 ...

  6. MySQL:服务无法启动(1067)问题

    打开安装文件下的my.ini 找到: #Path to the database rootdatadir="C:/ProgramData/MySQL/MySQL Server 5.5/dat ...

  7. 【CSP模拟赛】独立集(最长上升子序列&大力猜结论)

    题目描述 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独 立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两 个东西结合在一起.众所周知,独 ...

  8. MAC 上抓取网页数据的工具有哪些?

    我希望能够从网页上, 比如气象局数据, 财经数据等等, 我看到官方提供的数据都比较混乱, 有的是一个php文件, 有的是一个文本, 有的干脆不提供数据, 我想问, Mac上, 用什么工具去抓数据, 以 ...

  9. HearthBuddy修改系统时间

    将以下代码保存在.bat文件,然后用管理员权限运行 pushd "%~dp0" #下面修改时间,根据操作系统的语言不同,会有不同的格式,比如2019-10-26date 10/26 ...

  10. 小程序 跳转web-view 点击左上角返回需要点击2次才能返回

    小程序  跳转web-view  点击左上角返回需要点击2次才能返回 再html页面引入js即可解决 <script type="text/javascript" src=& ...