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. Kotlin扩展深入解析及注意事项和可见性

    可见性[Visibility]: 在Java中的可见性有public.protected.private.default四种,而在Kotlin中也有四种:public.protected.privat ...

  2. tensorflow 与cuda、cudnn的对应版本关系

    来源:https://www.cnblogs.com/zzb-Dream-90Time/p/9688330.html

  3. 题解 洛谷P3745 【[六省联考2017]期末考试】

    这题有点绕,我写了\(2h\)终于搞明白了. 主要思路:枚举最晚公布成绩的时间\(maxt\),然后将所有公布时间大于\(maxt\)的课程都严格降为\(maxt\)即可. 在此之前,还要搞清楚一个概 ...

  4. spring boot学习笔记(二)创建spring boot项目

    用eclipse(需要用高版本,要不然弄不出来):new →Spring Sarter Project 用IDEA:一般默认 一般默认 入门级的先 剩下的一般默认... 一.项目至少有下面的东西,里面 ...

  5. Spring源码窥探之:Condition

    采用注解的方式来注入bean 1. 编写config类 /** * @author 70KG * @Title: ConditionConfig * @Description: * @date 201 ...

  6. LightOJ - 1102 - Problem Makes Problem(组合数)

    链接: https://vjudge.net/problem/LightOJ-1102 题意: As I am fond of making easier problems, I discovered ...

  7. Tensorflow细节-P42张量的概念及使用

    1.运行以下代码 import tensorflow as tf a = tf.constant([1.0, 2.0], name="a") b = tf.constant([2. ...

  8. php自定义函数之静态变量

    如果我想知道函数被调用了多少次怎么办?在没有学习静态变量的时候,我们没有好的办法来解决. 静态变量的特点是:声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行. ...

  9. MySQL UTF8 转为 utf8mb4

    https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 How to support full Unicode in MySQL da ...

  10. ES安装手册

    http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.htmlhttps://githu ...