torch.nn.functional.interpolate介绍

文章目录

基本概念

torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None, antialias=False)

作用:将输入上采样或降采样到给定的 sizescale_factor=

使用的插值算法由 mode 决定,可以选择

  • 通用:area, nearest-exact

  • 3D:nearest, linear(3D-only)

  • 4D: bilinear, bicubic(4D-only)

  • 5D:trilinear(5D-only)

目前支持时间,空间和体积采样(输入是 3-D,4-D,5-D)

输入的数据的维度将会被解释为一下形式:

(mini-batch, channels, depth(optional), height(optional), width)

  • 在进行上采样的时候,mini-batchchannels是不变化的,变化的只有图的大小,最多是后三个维度

参数

  • input-输入tensor

  • size(int/Tuple[int]/Tuple[int, int]/Tuple[int, int, int])- 输出的维度

    • 如果是 int,则认为后面的维度都变化

      a = torch.ones(2, 2, 2, 2)
      a = F.interpolate(a, size=3, mode='area')
      print(a)
      print(a.shape)
      >>tensor([[[[1., 1., 1.],
                [1., 1., 1.],
                [1., 1., 1.]],
      
               [[1., 1., 1.],
                [1., 1., 1.],
                [1., 1., 1.]]],
      
      
              [[[1., 1., 1.],
                [1., 1., 1.],
                [1., 1., 1.]],
      
               [[1., 1., 1.],
                [1., 1., 1.],
                [1., 1., 1.]]]])
      >>torch.Size([2, 2, 3, 3])
      
  • scale_factor(float/Tuple[float])- 输出的 size 变成原来的几倍。如果scale_factor是 tuple,其长度应该和input.dim()一样(就是去掉前两维之后维度的数目)

    a = torch.ones(2, 2, 2, 2)
    a = F.interpolate(a, scale_factor=(2, 2), mode='bilinear', align_corners=False)
    print(a.shape)
    >>torch.Size([2, 2, 4, 4])
    
    • 同样,如果是一个数,就默认除前两维之外都变化
  • align_corners(bool,optional):几何上,我们认为像素是一个方块而不是一个点。

    • True:输入和输出 tensor 将会通过 corner pixels 的中心点来对齐,保留 corner pixels 的值
    • Fales:输入和输出 tensors 将会通过 corner pixels 的角点来对齐的
    • 默认是 False,只有当 mode = linear, bilinear, bicubic, trilinear时,才能设置
    • 从4×4上采样成8×8。一个是按四角的像素角点对齐,另一个是按四角的像素点中心对齐。

在这里插入图片描述

图像来源:https://discuss.pytorch.org/t/what-we-should-use-align-corners-false/22663/9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长命百岁️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值