torch.nn.functional.upsample#
- torch.nn.functional.upsample(input, size=None, scale_factor=None, mode='nearest', align_corners=None)[source]#
上采样输入。
将提供的张量上采样至指定的
size或指定的scale_factor。警告
此函数已被弃用,建议改用
torch.nn.functional.interpolate()。此函数等效于nn.functional.interpolate(...)。注意
此操作在使用 CUDA 设备上的张量时可能会产生非确定性梯度。有关更多信息,请参阅 可复现性。
上采样所使用的算法由
mode决定。目前支持时间、空间和体积上采样,即预期的输入形状为 3-D、4-D 或 5-D。
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)。
- 参数:
input (Tensor) – 输入张量
size (int 或 Tuple[int] 或 Tuple[int, int] 或 Tuple[int, int, int]) – 输出空间尺寸。
scale_factor (float 或 Tuple[float]) – 空间尺寸的乘数。如果是元组,则必须与输入尺寸匹配。
mode (str) – 用于上采样的算法:
'nearest'|'linear'|'bilinear'|'bicubic'|'trilinear'。默认值:'nearest'align_corners (bool, 可选) – 从几何角度看,我们将输入和输出的像素视为正方形而不是点。如果设为
True,则输入和输出张量通过其角像素的中心点对齐,从而保留角像素处的值。如果设为False,则输入和输出张量通过其角像素的角点对齐,插值时对边界外的值使用边缘值填充,这使得该操作在scale_factor保持不变时,独立于输入尺寸。该参数仅在mode为'linear'、'bilinear'、'bicubic'或'trilinear'时生效。默认值:False
注意
使用
mode='bicubic'时,可能会导致过冲(overshoot),换句话说,对于图像而言,它可能会产生负值或大于 255 的值。如果您希望在显示图像时减少过冲,请显式调用result.clamp(min=0, max=255)。警告
当
align_corners = True时,线性插值模式(linear、bilinear 和 trilinear)不会按比例对齐输出和输入像素,因此输出值可能会依赖于输入尺寸。这曾是版本 0.3.1 之前这些模式的默认行为。自那以后,默认行为改为align_corners = False。有关此设置如何影响输出的具体示例,请参见Upsample。