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
決定。目前支援時間、空間和體積取樣,即預期的輸入形狀為 3-D、4-D 或 5-D。
輸入維度以以下形式解釋:mini-batch x 通道 x [可選深度] x [可選高度] x 寬度。
可用於調整大小的模式有: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'
時有效。預設值: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'
。
- 回傳類型
注意
使用
mode='bicubic'
,可能會導致過衝,換句話說,它可能會產生負值或大於 255 的影像值。如果您想在顯示影像時減少過衝,請顯式呼叫result.clamp(min=0, max=255)
。注意
模式
mode='nearest-exact'
與 Scikit-Image 和 PIL 最近鄰內插演算法相符,並修復了mode='nearest'
的已知問題。引入此模式是為了保持向後相容性。模式mode='nearest'
與有錯誤的 OpenCVINTER_NEAREST
內插演算法相符。注意
當使用模式
['linear', 'bilinear', 'bicubic', 'trilinear', 'area']
時,CUDA 上的float16
dtype 的梯度在升採樣操作中可能不準確。 有關更多詳細信息,請參閱 issue#104157 中的討論。注意
當在 CUDA 裝置上給定張量時,此操作可能會產生非確定性的梯度。 有關更多信息,請參閱 可再現性。