megengine.functional.vision.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”。默认:”BILINEAR”

  • align_corners (Optional[bool]) – 这仅在`mode`为“ 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.  ]]]]