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
决定了用于插值的算法。目前支持时序、空间和体积采样,输入的数据可以是三维、四维或五维的。
输入维度的解释格式为:小批量 x 通道数 x [可选深度] x [可选高度] x 宽度。
可用的缩放模式包括:nearest,linear(仅限3D),bilinear,bicubic(仅限4D),trilinear(仅限5D),area,以及nearest-exact
- 参数
-
-
输入 (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, 可选) – 是否重新计算用于插值的 scale_factor。如果设置为
True
,则需要提供 scale_factor 并用它来计算输出尺寸 size。新的输出尺寸将用来推断插值的新比例。需要注意的是,当 scale_factor 是浮点数时,由于舍入和精度问题,可能会与重新计算的 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)
。注意
模式
mode='nearest-exact'
与 Scikit-Image 和 PIL 的最近邻插值算法匹配,并修复了mode='nearest'
模式中存在的问题。此模式的引入是为了保持向后兼容性。而模式mode='nearest'
则匹配有缺陷的 OpenCV 的INTER_NEAREST
插值算法。注意
当使用模式
['linear', 'bilinear', 'bicubic', 'trilinear', 'area']
时,数据类型为float16
的CUDA上采样操作中的梯度可能不准确。更多详情,请参阅issue#104157。注意
当给定的张量位于CUDA设备上时,此操作可能会产生非确定性的梯度。更多详细信息请参见重现性。