pytorch进行上采样的种类实例


Posted in Python onFebruary 18, 2020

1、其中再语义分割比较常用的上采样:

其实现方法为:

def upconv2x2(in_channels, out_channels, mode='transpose'):
 if mode == 'transpose':
  # 这个上采用需要设置其输入通道,输出通道.其中kernel_size、stride
  # 大小要跟对应下采样设置的值一样大小。这样才可恢复到相同的wh。这里时反卷积操作。
  return nn.ConvTranspose2d(
   in_channels,
   out_channels,
   kernel_size=2,
   stride=2)
 else:
  # out_channels is always going to be the same
  # as in_channels
  # 这里不会改变通道数,其中scale_factor是上采用的放大因子,其是相对于当前的
  # 输入大小的倍数
  return nn.Sequential(
   nn.Upsample(mode='bilinear', scale_factor=2, align_corners=True))
  # 这里的代码是在这里设置多一个卷积,这样子就起到了可以修改其输出通道的功能了。
  # 相当于功能跟ConvTranspose2d()差不多,只是上采样的方法不同
  conv1x1((in_channels, out_channels))
 
 
def conv1x1(in_channels, out_channels, groups=1):
 return nn.Sequential(nn.Conv2d(
  in_channels,
  out_channels,
  kernel_size=1,
  groups=groups,
  stride=1),
 nn.BatchNorm2d(out_channels))

另一种上采样的方法是,参考代码:segnet_pytorch:

# Stage 5
  x51 = F.relu(self.bn51(self.conv51(x4p)))
  x52 = F.relu(self.bn52(self.conv52(x51)))
  x53 = F.relu(self.bn53(self.conv53(x52)))
  #这个id5记录的是池化操作时最大值的index,其要设置参数return_indices为True
  x5p, id5 = F.max_pool2d(x53,kernel_size=2, stride=2,return_indices=True)
 
 
  # Stage 5d
  #这个是进行最大值上采样的函数,其是根据id5来把值放到什么位置,其它位置没有值的地方
  补0
  x5d = F.max_unpool2d(x5p, id5, kernel_size=2, stride=2)
  x53d = F.relu(self.bn53d(self.conv53d(x5d)))
  x52d = F.relu(self.bn52d(self.conv52d(x53d)))
  x51d = F.relu(self.bn51d(self.conv51d(x52d)))

测试例子:

#测试上采样
m=nn.MaxPool2d((3,3),stride=(1,1),return_indices=True)
upm=nn.MaxUnpool2d((3,3),stride=(1,1))
data4=torch.randn(1,1,3,3)
output5,indices=m(data4)
output6=upm(output5,indices)
 
print('\ndata4:',data4,
  '\nmaxPool2d',output5,
  '\nindices:',indices,
  '\noutput6:',output6)

其输出为:

data4: tensor([[[[ 2.3151, -1.0391, 0.1074],
   [ 1.9360, 0.2524, 2.3735],
   [-0.1151, 0.4684, -1.8800]]]]) 
maxPool2d tensor([[[[2.3735]]]]) 
indices: tensor([[[[5]]]]) 
output6: tensor([[[[0.0000, 0.0000, 0.0000],
   [0.0000, 0.0000, 2.3735],
   [0.0000, 0.0000, 0.0000]]]])

以上这篇pytorch进行上采样的种类实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
在Python程序员面试中被问的最多的10道题
Dec 05 Python
Python实现学校管理系统
Jan 11 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python实现朴素贝叶斯算法
Nov 19 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
python已协程方式处理任务实现过程
Dec 27 Python
使用TFRecord存取多个数据案例
Feb 17 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 Python
new_zeros() pytorch版本的转换方式
Feb 18 #Python
对pytorch的函数中的group参数的作用介绍
Feb 18 #Python
基于python3实现倒叙字符串
Feb 18 #Python
Python日期格式和字符串格式相互转换的方法
Feb 18 #Python
Python数组并集交集补集代码实例
Feb 18 #Python
通过python检测字符串的字母
Feb 18 #Python
Python安装whl文件过程图解
Feb 18 #Python
You might like
PHP入门速成教程
2007/03/19 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
script标签属性用type还是language
2015/01/21 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python socket实现简单聊天室
2018/04/01 Python
python中sys.argv函数精简概括
2018/07/08 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
详解Python做一个名片管理系统
2019/03/14 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
婚礼证婚人演讲稿
2014/09/13 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang