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决定。目前支持时间、空间和体积采样,即预期的输入是3维、4维或5维形状。
输入维度被解释为以下形式: 迷你批次 x 通道 x [可选深度] x [可选高度] x 宽度。
可用的调整大小模式有:最近邻、线性(仅限3D)、双线性、双三次(仅限4D)、三线性(仅限5D)、区域、精确最近邻
- Parameters
输入 (张量) – 输入张量
scale_factor (float 或 Tuple[float]) – 空间大小的乘数。如果 scale_factor 是一个元组,其长度必须与空间维度的数量匹配;input.dim() - 2。
模式 (字符串) – 用于上采样的算法:
'nearest'|'linear'|'bilinear'|'bicubic'|'trilinear'|'area'|'nearest-exact'。默认值:'nearest'align_corners (布尔值, 可选) – 几何上,我们将输入和输出的像素视为正方形而不是点。 如果设置为
True,输入和输出张量通过其角像素的中心点对齐,保留角像素的值。 如果设置为False,输入和输出张量通过其角像素的角点对齐,并且插值使用边缘值填充边界外的值,使得此操作在保持scale_factor相同的情况下与输入大小无关。这仅在mode为'linear'、'bilinear'、'bicubic'或'trilinear'时有效。 默认值:Falserecompute_scale_factor (bool, 可选) – 重新计算用于插值计算的 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, 可选) – 应用抗锯齿的标志。默认值:
False。使用抗锯齿选项与align_corners=False一起,插值结果将与Pillow的缩小操作结果匹配。支持的模式:'bilinear','bicubic'。
- Return type
注意
使用
mode='bicubic'时,可能会导致过冲,换句话说,它可能会产生小于0或大于255的值。如果您希望在显示图像时减少过冲,可以显式调用result.clamp(min=0, max=255)。注意
模式
mode='nearest-exact'匹配 Scikit-Image 和 PIL 最近邻插值算法,并修复了已知的mode='nearest'问题。此模式是为了保持向后兼容性而引入的。 模式mode='nearest'匹配有问题的 OpenCV 的INTER_NEAREST插值算法。注意
在CUDA上使用模式
['linear', 'bilinear', 'bicubic', 'trilinear', 'area']进行上采样操作时,float16数据类型的梯度可能会不准确。 更多详情请参考 issue#104157 中的讨论。注意
当在CUDA设备上给定张量时,此操作可能会产生不确定的梯度。更多信息请参见可重复性。