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)[源代码]#
对输入进行下采样/上采样。
将张量插值到给定的
size或给定的scale_factor。插值算法由
mode确定。目前支持时间、空间和体采样,即输入形状应为 3D、4D 或 5D。
The input dimensions are interpreted in the form: mini-batch x channels x [optional depth] x [optional height] x width.
可用于调整大小的模式有:nearest、linear(仅限 3D)、bilinear、bicubic(仅限 4D)、trilinear(仅限 5D)、area、nearest-exact。
- 参数:
input (Tensor) – 输入张量
size (int 或 Tuple[int] 或 Tuple[int, int] 或 Tuple[int, int, int]) – 输出的空间大小。
scale_factor (float 或 Tuple[float]) – 空间尺寸的乘数。如果 scale_factor 是元组,其长度必须与空间维度数匹配;input.dim() - 2。
mode (str) – 用于上采样的算法:
'nearest'|'linear'|'bilinear'|'bicubic'|'trilinear'|'area'|'nearest-exact'。默认值:'nearest'。align_corners (bool, optional) – 在几何上,我们将输入和输出的像素视为正方形而不是点。如果设置为
True,输入和输出张量将根据其角落像素的中心点对齐,保留角落像素的值。如果设置为False,输入和输出张量将根据其角落像素的角落点对齐,并且插值在边界外使用边缘值填充,这使得该操作在scale_factor保持不变时与输入大小无关。这仅在mode为'linear'、'bilinear'、'bicubic'或'trilinear'时生效。默认值:False。recompute_scale_factor (bool, optional) – 重新计算用于插值计算的
scale_factor。如果 recompute_scale_factor 为True,则必须传入 scale_factor,并使用 scale_factor 计算输出 size。计算出的输出 size 将用于推断插值的新比例。请注意,当 scale_factor 是浮点数时,由于舍入和精度问题,它可能与重新计算的 scale_factor 不同。如果 recompute_scale_factor 为False,则 size 或 scale_factor 将直接用于插值。默认值:None。antialias (bool, optional) – 应用抗锯齿的标志。默认值:
False。将抗锯齿选项与align_corners=False一起使用,对于下采样操作,插值结果将与 Pillow 的结果匹配。支持的模式:'bilinear'、'bicubic'。
- 返回类型:
注意
使用
mode='bicubic'时,可能会引起过冲。对于某些数据类型,它可能会产生负值或图像大于 255 的值。如果希望在显示图像时减小过冲,请显式调用result.clamp(min=0,max=255)。对于uint8输入,它已执行饱和转换操作。因此,不需要手动进行 clamp 操作。注意
模式
mode='nearest-exact'匹配 Scikit-Image 和 PIL 的最近邻插值算法,并修复了mode='nearest'的已知问题。此模式是为了保持向后兼容性而引入的。模式mode='nearest'匹配有 bug 的 OpenCV 的INTER_NEAREST插值算法。注意
在使用模式
['linear', 'bilinear', 'bicubic', 'trilinear', 'area']进行上采样操作时,CUDA 上float16数据类型的梯度可能不准确。更多详情,请参阅 issue#104157 中的讨论。注意
此操作在使用 CUDA 设备上的张量时可能会产生非确定性梯度。有关更多信息,请参阅 可复现性。