快捷方式

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)[source][source]

对输入进行下采样/上采样。

张量通过给定的 sizescale_factor 进行插值

插值算法由 mode 决定。

目前支持时间、空间和体三维采样,即期望的输入形状为 3 维、4 维或 5 维。

输入维度的解释形式为:mini-batch x channels x [可选深度] x [可选高度] x 宽度

可用的缩放模式有:nearestlinear(仅 3D)、bilinearbicubic(仅 4D)、trilinear(仅 5D)、areanearest-exact

参数
  • input (Tensor) – 输入张量

  • size (intTuple[int] 或 Tuple[int, int] 或 Tuple[int, int, int]) – 输出空间尺寸。

  • scale_factor (floatTuple[float]) – 空间尺寸的乘数。如果 scale_factor 是一个 tuple,其长度必须与空间维度的数量匹配;即 input.dim() - 2

  • mode (str) – 上采样使用的算法:'nearest' | 'linear' | 'bilinear' | 'bicubic' | 'trilinear' | 'area' | 'nearest-exact'。默认值:'nearest'

  • align_corners (bool, 可选) – 从几何学角度来看,我们将输入和输出的像素视为正方形而不是点。如果设置为 True,则输入和输出张量按其角像素的中心点对齐,保留角像素的值。如果设置为 False,则输入和输出张量按其角像素的角点对齐,插值使用边缘值填充处理边界外的值,使得当 scale_factor 保持不变时,此操作与输入大小无关。这仅在 mode'linear''bilinear''bicubic''trilinear' 时有效。默认值:False

  • recompute_scale_factor (bool, 可选) – 重新计算插值计算中使用的 scale_factor。如果 recompute_scale_factorTrue,则必须传入 scale_factor,并且 scale_factor 用于计算输出 size。计算出的输出 size 将用于推断插值的新缩放比例。请注意,当 scale_factor 是浮点数时,由于舍入和精度问题,它可能与重新计算的 scale_factor 不同。如果 recompute_scale_factorFalse,则直接使用 sizescale_factor 进行插值。默认值:None

  • antialias (bool, 可选) – 应用抗锯齿的标志。默认值:False。将抗锯齿选项与 align_corners=False 一起使用时,插值结果将与 Pillow 的下采样操作结果一致。支持的模式:'bilinear''bicubic'

返回类型

Tensor

注意

当使用 mode='bicubic' 时,可能会导致过冲,换句话说,对于图像而言,可能会产生负值或大于 255 的值。如果在显示图像时希望减少过冲,请显式调用 result.clamp(min=0, max=255)

注意

模式 mode='nearest-exact' 与 Scikit-Image 和 PIL 的最近邻插值算法一致,并修复了 mode='nearest' 的已知问题。引入此模式是为了保持向后兼容性。模式 mode='nearest' 与 OpenCV 中有 bug 的 INTER_NEAREST 插值算法一致。

注意

在使用模式 ['linear', 'bilinear', 'bicubic', 'trilinear', 'area'] 时,CUDA 上 dtype 为 float16 的上采样操作的梯度可能不准确。更多详细信息,请参考 issue#104157 中的讨论。

注意

在 CUDA 设备上给定张量时,此操作可能会产生非确定性梯度。更多信息请参阅可复现性

文档

查阅全面的 PyTorch 开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源