pytorch进行上采样的种类实例
作者:yangdashi888 发布时间:2023-11-28 14:02:03
标签:pytorch,上采样,种类
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]]]])
来源:https://blog.csdn.net/yangdashi888/article/details/87937833
0
投稿
猜你喜欢
- 在 Go 语言中,map 是一种非常常见的数据类型,它可以用于快速地检索数据。Go 语言中的 map 与其他编程语言中的类似的数据类型相比,
- 在已知DICOM和三维模型对应掩膜的情况下,计算三维模型的体积。思路:1、计算每个体素的体积。每个体素为长方体,x,y为PixelSpaci
- 本文使用的代码book_dict = {"price": 500, "bookName": &quo
- 本文实例讲述了Python实现对字典分别按键(key)和值(value)进行排序的方法。分享给大家供大家参考,具体如下:方法一:#使用sor
- 01. 应用场景及定义方式应用场景在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到私有属性
- 1. ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM 子句中写在最后的表(基础表 driving ta
- 问题Go语言在编译时不会将配置文件这类第三方文件打包进二进制文件中它既受当前路径的影响,也会因所填写的不同而改变,并非是绝对可靠的解决命令行
- 第一次用Python写这种比较实用且好玩的东西,权当练手吧游戏说明:* P键控制“暂停/开始”* 方向键控制贪吃蛇的方向源代码如下:from
- 删除一,你可以先把类型为varchar的字段该名,再加以个字段为要该为date的字段名相同,二,1,测试表create table TEST
- 应用场景:使用pandas把多个相同结构的Excel文件合并为一个。原始数据: 相关代码:import osimport pand
- 本文实例讲述了Python按行读取文件的实现方法。分享给大家供大家参考,具体如下:小文件:#coding=utf-8#author: wal
- 如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间
- SocketServer创建一个网络服务框架。它定义了类来处理TCP,UDP, UNIX streams 和UNIX datagrams上的
- 1.概述ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,Cha
- 0. 学习目标在诸如单链表、双线链表等普通链表中,查找、插入和删除操作由于必须从头结点遍历链表才能找到相关链表,因此时间复杂度均为O(n)。
- 简介网上流传的部分可以百度关键词“Python”和“word”后查看文章学习,以下内容为个人实践,修正了不能运行出错的情况。代码示例impo
- XPathXPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath使用方
- 图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。在噪声的概念中,通常采用信噪比(Signal-Noise Rate, S
- 最近在用GAE开发自己的博客程序。虽然GAE的API没有显式的提供操作Cookie的方法,但他现有的架构,使我们有足够的自由来操作Cooki
- 新手学习Python,之前在网上看见一位朋友写的40行Python代码搞定京东秒杀,想在淘宝上帮女朋友抢玩偶,所以就照猫画虎的写了下淘宝的秒