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) – interpolation methods, acceptable values are: “bilinear”, “linear”, “trilinear”, “bicubic” and “nearest”. Default: “bilinear” “trilinear” is valid only when inp is a 5D-tensor

  • align_corners (Optional[bool]) – 只用当 mode 是 “bilinear” 或 “linear” 时这才有效。几何上,我们认为输入和输出的像素是正方形而不是点。如果设置为 True ,输入和输出张量四角上的像素的中心会被对齐,四角上的像素的值保持不变。如果设置为 False ,输入和输出张量四角上的像素的角会被对齐,并且插值对于边界外的值会使用边界上的值进行填充,使得这个操作 不依赖 输入的大小。

返回类型

Tensor

返回

输出张量

实际案例

>>> import numpy as np
>>> x = Tensor(np.arange(1, 5, dtype=np.float32).reshape(1, 1, 2, 2))
>>> out = F.vision.interpolate(x, [4, 4], align_corners=False)
>>> out.numpy()
array([[[[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.  ]]]], dtype=float32)
>>> out2 = F.vision.interpolate(x, scale_factor=2.)
>>> np.testing.assert_allclose(out.numpy(), out2.numpy())