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。
输入维度以以下形式解释:mini-batch x channels x [可选深度] x [可选高度] x 宽度。
可用于调整大小的模式有:nearest、linear(仅限 3D)、bilinear、bicubic(仅限 4D)、trilinear(仅限 5D)、area、nearest-exact
- 参数
input (张量) – 输入张量
size (int 或 元组[int] 或 元组[int, int] 或 元组[int, int, int]) – 输出空间大小。
scale_factor (float 或 元组[float]) – 空间大小的乘数。如果 scale_factor 是一个元组,则其长度必须与空间维度的数量匹配;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_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'
。
- 返回类型
注意
使用
mode='bicubic'
时,可能会导致过冲,换句话说,它可能会为图像生成负值或大于 255 的值。如果您希望在显示图像时减少过冲,请显式调用result.clamp(min=0, max=255)
。注意
模式
mode='nearest-exact'
与 Scikit-Image 和 PIL 最近邻插值算法匹配,并修复了mode='nearest'
的已知问题。引入此模式是为了保持向后兼容性。模式mode='nearest'
与有问题的 OpenCV 的INTER_NEAREST
插值算法匹配。注意
在使用模式
['linear', 'bilinear', 'bicubic', 'trilinear', 'area']
时,CUDA 上数据类型float16
的梯度在上采样操作中可能不准确。有关更多详细信息,请参阅 issue#104157 中的讨论。注意
当在 CUDA 设备上给出张量时,此操作可能会产生不确定的梯度。有关更多信息,请参阅 可重复性。