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


猜你喜欢
- 如题,我有一个模板,我想根据需求复制模板中间的某一页多次,比如复制第五页,然后复制3次,那么第六页,第七页,第八页都是和第五页一模一样的pp
- 这些编码,早些时候在一些应用软件中经常看到,估计很多朋友也看到了,这些编码了!从这个图,我们可以看到这类编码应用很广泛,那么我们一起看看,i
- 第一个坑:'geckodriver' executable needs to be in PATH1.如果启动浏览器过程中报
- 一、TensorFlow常规模型加载方法保存模型tf.train.Saver()类,.save(sess, ckpt文件目录)方法参数名称功
- set oSQLServer =server.createobject("SQLDMO.SQLServer")oSQLS
- 第一题:ASP中,VBScript的唯一的数据类型是什么?第二题:在ASP中,VBScript有多种控制程序流程语句,如If…Then, S
- 编码和解码及\x和\u问题“字符在内存里的表示是unicode,如果要存盘或者发到网络就经过utf-8,然后对端收到依次
- 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-Conq
- 前言本文主要给大家介绍了关于Python利用元组代替字典并为元组元素命名的相关内容,下面话不多说了,来一起看看详细的介绍吧场景:一般使用字典
- 前几天,酋长同学在日志里提到了关于Google宽松的管理制度,一个产品任务下来是没有时间限制的,Google深信在有时间限制下的产品肯定是不
- 先说一下最土的一种方法:Html:<div class="tab-head">
- 本文实例讲述了Python基于递归算法实现的汉诺塔与Fibonacci数列。分享给大家供大家参考,具体如下:这里我们通过2个例子,学习pyt
- 事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息。收缩日志的原因有很多种,有些是考虑空间不足,有些则是
- pytorch中尝试用多进程加载训练数据集,源码如下:trainloader = torch.utils.data.DataLoader(t
- Exec 包我们可以使用官方的 os/exec 包来运行外部命令。当我们执行 shell 命令时,我们是在 G
- split()介绍函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():
- 将ASCII字符转换为对应的数值即‘a'-->65,使用ord函数,ord('a')反之,使用chr函数,将数
- 我们昨天已经学习了python的文件读写,今天来做一个最简单的例子,写一个最简单的缓存系统,要求:以key``value的方式保持数据,并且
- 本文实例讲述了python定时器(Timer)用法。分享给大家供大家参考。具体如下:# encoding: UTF-8import thre
- 本文实例为大家分享了Python实现图像增强的具体代码,供大家参考,具体内容如下题目描述:对于下面这幅图像(图 1),请问可以通过那些图像增