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 ...
随机推荐
- 微信小程序---存储本地缓存数据
微信小程序之数据缓存 开发中常用setStorageSync来实现本地数据缓存操作 (1)点击缓存案例: <button bindtap="toStorage">存储& ...
- 小程序框架之视图层 View~基础组件
框架为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发.详细介绍请参考组件文档. 什么是组件: 组件是视图层的基本组成单元. 组件自带一些功能与微信风格一致的样式. 一个组件通常 ...
- 《CoderXiaoban》第九次团队作业:Beta冲刺与验收准备2
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件黑盒 ...
- 神经网络(9)--如何求参数: backpropagation algorithm(反向传播算法)
Backpropagation algorithm(反向传播算法) Θij(l) is a real number. Forward propagation 上图是给出一个training examp ...
- 自定义异步IO框架
异步就是回调 异步 = 非阻塞+循环 select只能完成IO多路复用,不能完成异步 IO多路复用--->监听多个socket对象,这个过程是同步的 利用其特性可以开发异步模块 异步IO:非阻塞 ...
- SQL 删除字段 增加字段
SQL增加字段需要用到sql语句 ALTER TABLE 加(表格名称) ADD 加(字段名称) 加(字段类型)实例:ALTER TABLE T_Basic ADD SEODescription Nv ...
- QSetting介绍
简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中. ...
- kafka Auto offset commit faild reblance
今天在使用python消费kafka时遇到了一些问题, 特记录一下. 场景一. 特殊情况: 单独写程序只用来生产消费数据 开始时间: 10:42 Topic: t_facedec Partition: ...
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7, ...
- 41、Hive数据源复杂综合案例
一.Hive数据源案例 1.概述 Spark SQL支持对Hive中存储的数据进行读写.操作Hive中的数据时,必须创建HiveContext,而不是SQLContext.HiveContext继承自 ...