megengine.functional.nn.interpolate

interpolate(inp, size=None, scale_factor=None, mode='bilinear', align_corners=None)[源代码]

按照给定的 sizescale_factor 对输入张量进行向下/向上采样。size 不可以与 scale_factor 共存。

参数
  • inp (Tensor) – 输入张量。

  • size (Union[int, Tuple[int, int], None]) – 输出张量的形状。 默认:None

  • scale_factor (Union[float, Tuple[float, float], None]) – 输出张量的放缩参数。默认:None

  • mode (str) – 插值方法。 默认值是”bilinear”, 目前还支持”linear”, “bicubic” 和”nearest”的插值方法。

  • align_corners (Optional[bool]) – 只在插值方式为”bilinear” 或者 “linear”的时候需要设置。几何上看,我们将像素视作方框而不是点。 该值设置为``True``时,输入输出张量角点像素的中心点对齐, 保留角点像素的值。 该值设置为``False``时候, 输入输出张量角点的像素的角点对齐,用边界值填充超出边界的像素点点, 该操作和输入的大小无关。

返回类型

Tensor

返回

输出张量。

实际案例

import numpy as np
from megengine import tensor
import megengine.functional as F

x = tensor(np.arange(1, 5, dtype=np.float32).reshape(1, 1, 2, 2))
out = F.vision.interpolate(x, [4, 4], align_corners=False)
print(out.numpy())
out2 = F.vision.interpolate(x, scale_factor=2.)
np.testing.assert_allclose(out.numpy(), out2.numpy())

输出:

[[[[1.   1.25 1.75 2.  ]
   [1.5  1.75 2.25 2.5 ]
   [2.5  2.75 3.25 3.5 ]
   [3.   3.25 3.75 4.  ]]]]