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] -
Увеличивает или уменьшает размер входных данных.
Тензор интерполируется до заданного
sizeили до заданногоscale_factorАлгоритм интерполяции определяется параметром
mode.В настоящее время поддерживается временная, пространственная и объемная выборка, то есть ожидаются входные данные размерностью 3, 4 или 5.
Размерности входных данных интерпретируются в виде:
mini-batch x channels x [optional depth] x [optional height] x width.Доступные режимы изменения размера:
nearest,linear(только для 3D),bilinear,bicubic(только для 4D),trilinear(только для 5D),lanczos(только для 4D, только CPU),area,nearest-exact- Параметры:
-
- input (Tensor) – входной тензор
- size (int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]) – размер выходного пространства.
-
scale_factor (float or Tuple[float]) – множитель размера пространства. Если
scale_factor— кортеж, его длина должна соответствовать числу пространственных размерностей;input.dim() - 2. -
mode (str) – алгоритм увеличения размера:
'nearest'|'linear'|'bilinear'|'bicubic'|'trilinear'|'lanczos'|'area'|'nearest-exact'. По умолчанию:'nearest' -
align_corners (bool, optional) – С геометрической точки зрения пиксели входных и выходных данных рассматриваются как квадраты, а не как точки. Если задано значение
True, входной и выходной тензоры выравниваются по центральным точкам угловых пикселей, сохраняя значения этих пикселей. Если задано значениеFalse, входной и выходной тензоры выравниваются по угловым точкам угловых пикселей, а при интерполяции для значений за границами используются значения краев; благодаря этому операция не зависит от размера входных данных, еслиscale_factorостается неизменным. Это влияет только на режимыmode:'linear','bilinear','bicubic'или'trilinear'. По умолчанию:None. ЗначениеNoneоставляетalign_cornersнезаданным для режимов, в которых он не используется. В режимах, использующихalign_corners, значениеNoneрассматривается какFalse. -
recompute_scale_factor (bool, optional) – повторно вычислять 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, optional) – флаг включения сглаживания. По умолчанию:
False. При использовании сглаживания вместе сalign_corners=Falseрезультат интерполяции при уменьшении размера будет совпадать с результатом Pillow. Поддерживаемые режимы:'bilinear','bicubic','lanczos'.
- Тип возвращаемого значения:
Примечание
При использовании
mode='bicubic'илиmode='lanczos'возможен выброс значений за допустимый диапазон. Для некоторых типов данных это может приводить к появлению отрицательных значений или значений больше 255 для изображений. Чтобы уменьшить выброс значений при отображении изображения, явно вызовитеresult.clamp(min=0,max=255). Для входных данныхuint8операция насыщенного приведения типа выполняется автоматически. Поэтому вручную выполнять операциюclampне требуется.Примечание
В режиме
mode='lanczos'используется оконный sinc-фильтр Lanczos-3 (6 отсчетов), для которого требуетсяantialias=True. Он поддерживает только входные данные 4D (то есть двумерные пространственные данные) и только CPU. При использованииantialias=Trueиalign_corners=Falseрезультат совпадает с фильтром ресэмплингаImage.LANCZOSиз PIL.Примечание
Режим
mode='nearest-exact'соответствует алгоритмам интерполяции ближайшего соседа в Scikit-Image и PIL и исправляет известные проблемы сmode='nearest'. Этот режим добавлен для обеспечения обратной совместимости. Режимmode='nearest'соответствует некорректному алгоритму интерполяцииINTER_NEARESTв OpenCV.Примечание
Градиенты для типа данных
float16на CUDA при операции увеличения размера могут быть неточными при использовании режимов['linear', 'bilinear', 'bicubic', 'trilinear', 'area']. Подробнее см. обсуждение в issue#104157.Примечание
Эта операция может приводить к недетерминированным градиентам, если тензоры находятся на устройстве CUDA. Дополнительные сведения см. в разделе Воспроизводимость.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.functional.interpolate.html