torch.nn.functional.upsample¶
- torch.nn.functional.upsample(input, size=None, scale_factor=None, mode='nearest', align_corners=None)[source][source]¶
對輸入進行上取樣。
提供的張量將根據給定的
size或scale_factor進行上取樣。警告
此函式已棄用,請使用
torch.nn.functional.interpolate()代替。它等同於nn.functional.interpolate(...)。注意
在 CUDA 裝置上給定張量時,此操作可能會產生非確定性梯度。更多資訊請參閱可復現性。
上取樣所使用的演算法由
mode決定。當前支援時間維、空間維和體素維的上取樣,即期望輸入形狀為 3-D、4-D 或 5-D。
輸入維度按以下形式解釋:mini-batch x channels x [可選深度] x [可選高度] x 寬度。
可用於上取樣的模式有:nearest(最近鄰插值)、linear(線性插值,僅 3D)、bilinear(雙線性插值)、bicubic(雙三次插值,僅 4D)、trilinear(三線性插值,僅 5D)
- 引數
input (Tensor) – 輸入張量
size (int 或 Tuple[int] 或 Tuple[int, int] 或 Tuple[int, int, int]) – 輸出空間大小。
scale_factor (float 或 Tuple[float]) – 空間大小的乘數。如果是 Tuple,則必須與輸入大小匹配。
mode (str) – 上取樣使用的演算法:
'nearest'(最近鄰) |'linear'(線性) |'bilinear'(雙線性) |'bicubic'(雙三次) |'trilinear'(三線性)。預設值:'nearest'align_corners (bool, 可選) – 從幾何上講,我們將輸入和輸出的畫素視為正方形而不是點。如果設定為
True,輸入和輸出張量會透過角畫素的中心點對齊,保留角畫素的值。如果設定為False,輸入和輸出張量會透過角畫素的角點對齊,插值會使用邊緣值填充邊界外的值,當scale_factor保持不變時,這使得此操作與輸入大小無關。這僅在mode為'linear','bilinear','bicubic'或'trilinear'時生效。預設值:False
注意
在使用
mode='bicubic'時,可能會導致過沖,換句話說,它可能為影像產生負值或大於 255 的值。如果在顯示影像時想減少過沖,請顯式呼叫result.clamp(min=0, max=255)。警告
當
align_corners = True時,線性插值模式(linear、bilinear 和 trilinear)不會按比例對齊輸出和輸入畫素,因此輸出值可能取決於輸入大小。這是這些模式在 0.3.1 版本之前的預設行為。從那時起,預設行為是align_corners = False。請參閱Upsample瞭解具體示例,說明這如何影響輸出。