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確定。目前支援時間、空間和體取樣,即輸入的形狀期望為 3D、4D 或 5D。
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)、area、nearest-exact
- 引數
input (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'時才生效。預設:Falserecompute_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'。
- 返回型別
注意
使用
mode='bicubic'時,可能會導致過沖。對於某些資料型別,在顯示影像時可能會產生負值或大於 255 的值。如果希望減少顯示影像時的過沖,請顯式呼叫result.clamp(min=0,max=255)。對於uint8輸入,它已經執行了飽和轉換操作。因此,不需要手動 clamp 操作。注意
模式
mode='nearest-exact'匹配 Scikit-Image 和 PIL 的最近鄰插值演算法,並修復了mode='nearest'已知的錯誤。此模式是為了保持向後相容性而引入的。模式mode='nearest'匹配有 bug 的 OpenCV 的INTER_NEAREST插值演算法。注意
在使用模式
['linear', 'bilinear', 'bicubic', 'trilinear', 'area']時,CUDA 上float16資料型別的梯度在上取樣操作中可能不準確。有關更多詳細資訊,請參閱 issue#104157 中的討論。注意
此操作在使用 CUDA 裝置上的張量時可能會產生非確定性梯度。有關更多資訊,請參閱 可復現性。