pytorch常用的padding函数
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函数的更多相关文章
- pytorch常用函数总结(持续更新)
pytorch常用函数总结(持续更新) torch.max(input,dim) 求取指定维度上的最大值,,返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引.比如: demo.sha ...
- PyTorch常用代码段整理合集
PyTorch常用代码段整理合集 转自:知乎 作者:张皓 众所周知,程序猿在写代码时通常会在网上搜索大量资料,其中大部分是代码段.然而,这项工作常常令人心累身疲,耗费大量时间.所以,今天小编转载了知乎 ...
- 交叉熵的数学原理及应用——pytorch中的CrossEntropyLoss()函数
分类问题中,交叉熵函数是比较常用也是比较基础的损失函数,原来就是了解,但一直搞不懂他是怎么来的?为什么交叉熵能够表征真实样本标签和预测概率之间的差值?趁着这次学习把这些概念系统学习了一下. 首先说起交 ...
- 常用的WinAPI函数整理
常用的WinAPI函数整理 一.进程 创建进程: CreateProcess("C:\\windows\\notepad.exe",0,0,0,0,0,0,0,&s ...
- 最常用的截取函数有left,right,substring
最常用的截取函数有left,right,substring 1.LEFT ( character_expression , integer_expression ) 返回从字符串左边开始指定个数的字符 ...
- Appium常用的API函数
在学习应用一个框架之前,应该了解一下这个框架的整体结构或是相应的API函数.这篇文章还不错:http://blog.sina.com.cn/s/blog_68f262210102vzf9.html,就 ...
- MYSQL常用内置函数详解说明
函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...
- 常用的Sql 函数
常用的Sql 函数 1: replace 函数,替换字符. 语法 replace (original-string, search-string, replace-string ) 第一个参数你的字符 ...
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
随机推荐
- destoon6.0搜索页熊掌号页面改造技巧【原创】
大家都知道,DT官方是封禁搜索页的,是不让百度蜘蛛抓取的,但是搜索页又是大型网站优化的重点,今天来说说关于DT6.0搜索页熊掌号的改造方法,如果您要改造内容页面可以查看我前几期的分享! 首先要开启百度 ...
- test20190818 NOIP2019 模拟赛
0+0+20=20,不给大样例,小数据又水,还没有题解的垃圾题. A 题 问题描述: long long ago, Lxhgww 统治的国家里有 n 个城市,其中某一个城市是 capital (首都) ...
- 【Mac电脑】Burp 设置代理后提示“您的链接不是私密链接”的解决方案
一.遇到的问题 通过Burp Proxy代理抓包时,遇到的如下情况: 二.解决问题 (1)基础介绍 HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过C ...
- 物体检测方法(1) - YOLO 详解
最近遇到一些卡证识别的检测问题,打算先把理论知识梳理一下,随后还会梳理一版代码注释. 以前的region+proposal来检测的框架,这一系列速度和精度不断提高,但是还是无法达到实时.存在的主要问题 ...
- java 反射获取字段为List类型中的泛型类型
在java编程时,经常会使用反射去处理对象,有时会需要知道List的泛型类型:示例操作如下 obj = pojo.newInstance(); // 首先得到pojo所定义的字段 Field[] fi ...
- 【贪心】Moving Tables POJ 1083
题目链接:http://poj.org/problem?id=1083 题目大意:走廊上的房间如下图设置,现在有n个移动桌子的任务,把桌子从xi移动到yi(整个过程中会占用xi到yi房间之间的走廊), ...
- (26)打鸡儿教你Vue.js
weex框架的使用 1.weex开发入门 2.weex开发环境搭建 3.掌握部分weex组件模块 4.了解一些vue基本常见语法 5.制作一个接近原生应用体验的app weex介绍 安装开发环境 We ...
- Beego没gin配置静态页面方便
上代码 腾讯这个例子还是很值得学习的,不轻有东西,单也不重到看着都蒙圈的样子. https://github.com/Tencent/bk-cmdb/blob/master/src/web_serve ...
- 2019.11.11 模拟赛 T2 乘积求和
昨天 ych 的膜你赛,这道题我 O ( n4 ) 暴力拿了 60 pts. 这道题的做法还挺妙的,我搞了将近一天呢qwq 题解 60 pts 根据题目给出的式子,四层 for 循环暴力枚举统计答案即 ...
- SpringMVC的处理器全局异常处理类
SpringMVC的处理器全局异常处理类 package com.huawei.utils; import org.springframework.web.servlet.HandlerExcepti ...