快捷方式

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

對輸入進行下采樣/上取樣。

張量透過給定的 sizescale_factor 進行插值

插值演算法由 mode 決定。

目前支援時間、空間和體三維取樣,即期望的輸入形狀為 3 維、4 維或 5 維。

輸入維度的解釋形式為:mini-batch x channels x [可選深度] x [可選高度] x 寬度

可用的縮放模式有:nearestlinear(僅 3D)、bilinearbicubic(僅 4D)、trilinear(僅 5D)、areanearest-exact

引數
  • input (Tensor) – 輸入張量

  • size (intTuple[int] 或 Tuple[int, int] 或 Tuple[int, int, int]) – 輸出空間尺寸。

  • scale_factor (floatTuple[float]) – 空間尺寸的乘數。如果 scale_factor 是一個 tuple,其長度必須與空間維度的數量匹配;即 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_factorTrue,則必須傳入 scale_factor,並且 scale_factor 用於計算輸出 size。計算出的輸出 size 將用於推斷插值的新縮放比例。請注意,當 scale_factor 是浮點數時,由於舍入和精度問題,它可能與重新計算的 scale_factor 不同。如果 recompute_scale_factorFalse,則直接使用 sizescale_factor 進行插值。預設值:None

  • antialias (bool, 可選) – 應用抗鋸齒的標誌。預設值:False。將抗鋸齒選項與 align_corners=False 一起使用時,插值結果將與 Pillow 的下采樣操作結果一致。支援的模式:'bilinear''bicubic'

返回型別

Tensor

注意

當使用 mode='bicubic' 時,可能會導致過沖,換句話說,對於影像而言,可能會產生負值或大於 255 的值。如果在顯示影像時希望減少過沖,請顯式呼叫 result.clamp(min=0, max=255)

注意

模式 mode='nearest-exact' 與 Scikit-Image 和 PIL 的最近鄰插值演算法一致,並修復了 mode='nearest' 的已知問題。引入此模式是為了保持向後相容性。模式 mode='nearest' 與 OpenCV 中有 bug 的 INTER_NEAREST 插值演算法一致。

注意

在使用模式 ['linear', 'bilinear', 'bicubic', 'trilinear', 'area'] 時,CUDA 上 dtype 為 float16 的上取樣操作的梯度可能不準確。更多詳細資訊,請參考 issue#104157 中的討論。

注意

在 CUDA 裝置上給定張量時,此操作可能會產生非確定性梯度。更多資訊請參閱可復現性

文件

查閱全面的 PyTorch 開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源