torch.nn.interpolate—torch上采样和下采样操作

前言:

最近博主搭建网络需要用到一些直接对于GPU上的tensor的上采样和下采样操作,如果使用opencv那么就需要先将数据从GPU上面copy到CPU,操作完后在转移到GPU。这样不能利用GPU的加速技术,并且还会导致程序阻塞,pytorch中带有函数interpolate可以实现这个功能,下面详细讲解这个函数的使用。

1.TORCH.NN.FUNCTIONAL.INTERPOLATE

torch.nn.functional.interpolate(inputsize=Nonescale_factor=Nonemode='nearest'align_corners=Nonerecompute_scale_factor=Noneantialias=False)[SOURCE]

**输入尺寸以以下形式解释: 小批量 x 通道 x [可选深度] x [可选高度] x 宽度。

**向下/向上对给定size 或 给定的输入进行采样scale_factor

**用于插值的算法由 mode确定目前支持时间、空间和体积采样,即预期输入的形状是 3-D、4-D 或 5-D。

***可用于调整大小的模式有(中英文对照)

nearest, linear (3D-only), bilinear, bicubic (4D-only), trilinear (5D-only), area, nearest-exact

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`torch.nn.functional.interpolate()` 函数可以用来对张量进行插值操作,可以实现上采样和下采样操作。它的用法如下: ``` torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None) ``` 其中,参数含义如下: - `input`:要进行插值操作的张量 - `size`:输出的张量的空间大小,可以是一个整数或者一个元组。如果是一个整数,则表示输出张量的高度和宽度相等;如果是一个元组,则表示输出张量的高度和宽度分别为元组中的两个整数。 - `scale_factor`:输出张量的缩放因子,可以是一个浮点数或者一个元组。如果是一个浮点数,则表示输出张量的高度和宽度都乘以该浮点数;如果是一个元组,则表示输出张量的高度和宽度分别乘以元组中的两个浮点数。 - `mode`:插值模式,可选值为 `'nearest'`、`'linear'`、`'bilinear'`、`'trilinear'`、`'area'`。默认值为 `'nearest'`,表示最近邻插值。 - `align_corners`:是否对齐角点。默认值为 `None`,表示不对齐角点。 下面是一个例子: ```python import torch # 创建一个大小为 (1, 3, 2, 2) 的张量 input = torch.tensor([[[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]]]) # 对张量进行上采样,输出张量的大小为 (1, 3, 4, 4) output = torch.nn.functional.interpolate(input, size=(4, 4), mode='nearest') print(output) ``` 输出结果为: ``` tensor([[[[ 1, 1, 2, 2], [ 1, 1, 2, 2], [ 3, 3, 4, 4], [ 3, 3, 4, 4]], [[ 5, 5, 6, 6], [ 5, 5, 6, 6], [ 7, 7, 8, 8], [ 7, 7, 8, 8]], [[ 9, 9, 10, 10], [ 9, 9, 10, 10], [11, 11, 12, 12], [11, 11, 12, 12]]]]) ``` 这里我们将输入张量 `input` 上采样到了大小为 `(4, 4)`,并且指定了插值模式为最近邻插值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

两只蜡笔的小新

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

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

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

打赏作者

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

抵扣说明:

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

余额充值