Rate this Page

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)[source]#

Down/up samples the input.

Tensor interpolated to either the givensize or the givenscale_factor

The algorithm used for interpolation is determined bymode.

Currently temporal, spatial and volumetric sampling are supported, i.e.expected inputs are 3-D, 4-D or 5-D in shape.

The input dimensions are interpreted in the form:mini-batch x channels x [optional depth] x [optional height] x width.

The modes available for resizing are:nearest,linear (3D-only),bilinear,bicubic (4D-only),trilinear (5D-only),area,nearest-exact

Parameters
  • input (Tensor) – the input tensor

  • size (int orTuple[int] orTuple[int,int] orTuple[int,int,int]) – output spatial size.

  • scale_factor (float orTuple[float]) – multiplier for spatial size. Ifscale_factor is a tuple,its length has to match the number of spatial dimensions;input.dim() - 2.

  • mode (str) – algorithm used for upsampling:'nearest' |'linear' |'bilinear' |'bicubic' |'trilinear' |'area' |'nearest-exact'. Default:'nearest'

  • align_corners (bool,optional) – Geometrically, we consider the pixels of theinput and output as squares rather than points.If set toTrue, the input and output tensors are aligned by thecenter points of their corner pixels, preserving the values at the corner pixels.If set toFalse, the input and output tensors are aligned by the cornerpoints of their corner pixels, and the interpolation uses edge value paddingfor out-of-boundary values, making this operationindependent of input sizewhenscale_factor is kept the same. This only has an effect whenmodeis'linear','bilinear','bicubic' or'trilinear'.Default:False

  • recompute_scale_factor (bool,optional) – recompute the scale_factor for use in theinterpolation calculation. Ifrecompute_scale_factor isTrue, thenscale_factor must be passed in andscale_factor is used to compute theoutputsize. The computed outputsize will be used to infer new scales forthe interpolation. Note that whenscale_factor is floating-point, it may differfrom the recomputedscale_factor due to rounding and precision issues.Ifrecompute_scale_factor isFalse, thensize orscale_factor willbe used directly for interpolation. Default:None.

  • antialias (bool,optional) – flag to apply anti-aliasing. Default:False. Using anti-aliasoption together withalign_corners=False, interpolation result would match Pillowresult for downsampling operation. Supported modes:'bilinear','bicubic'.

Return type

Tensor

Note

Withmode='bicubic', it’s possible to cause overshoot. For some dtypes, it can producenegative values or values greater than 255 for images. Explicitly callresult.clamp(min=0,max=255)if you want to reduce the overshoot when displaying the image.Foruint8 inputs, it already performs saturating cast operation. So, no manualclamp operation is needed.

Note

Modemode='nearest-exact' matches Scikit-Image and PIL nearest neighbours interpolationalgorithms and fixes known issues withmode='nearest'. This mode is introduced to keepbackward compatibility.Modemode='nearest' matches buggy OpenCV’sINTER_NEAREST interpolation algorithm.

Note

The gradients for the dtypefloat16 on CUDA may be inaccurate in the upsample operationwhen using modes['linear','bilinear','bicubic','trilinear','area'].For more details, please refer to the discussion inissue#104157.

Note

This operation may produce nondeterministic gradients when given tensors on a CUDA device. SeeReproducibility for more information.