本文簡要介紹python語言中 torch.nn.Upsample
的用法。
用法:
class torch.nn.Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None)
size(int或者元組[int] 或者元組[int,int] 或者元組[int,int,int],可選的) - 輸出空間大小
scale_factor(float或者元組[float] 或者元組[float,float] 或者元組[float,float,float],可選的) - 空間大小的乘數。如果它是元組,則必須匹配輸入大小。
mode(str,可選的) -上采樣算法:
'nearest'
、'linear'
、'bilinear'
、'bicubic'
和'trilinear'
之一。默認值:'nearest'
align_corners(bool,可選的) -如果
True
,輸入和輸出張量的角像素對齊,從而保留這些像素的值。這僅在mode
為'linear'
、'bilinear'
或'trilinear'
時有效。默認值:False
對給定的多通道 1D(時間)、2D(空間)或 3D(體積)數據進行上采樣。
假設輸入數據的形式為
minibatch x channels x [optional depth] x [optional height] x width
.因此,對於空間輸入,我們期待 4D 張量,對於體積輸入,我們期待 5D 張量。可用於上采樣的算法分別是 3D、4D 和 5D 輸入張量的最近鄰和線性、雙線性、雙三次和三線性。
可以給出
scale_factor
或目標輸出size
來計算輸出大小。 (你不能同時給出,因為它是模棱兩可的)- 形狀:
輸入: 、 或
輸出: 、 或 ,其中
警告
對於
align_corners = True
,線性插值模式(linear
、bilinear
、bicubic
和trilinear
)不會按比例對齊輸出和輸入像素,因此輸出值可能取決於輸入大小。這是 0.3.1 之前這些模式的默認行為。從那時起,默認行為是align_corners = False
。有關這如何影響輸出的具體示例,請參見下文。注意
如果你想要下采樣/一般調整大小,你應該使用
interpolate()
。例子:
>>> input = torch.arange(1, 5, dtype=torch.float32).view(1, 1, 2, 2) >>> input tensor([[[[ 1., 2.], [ 3., 4.]]]]) >>> m = nn.Upsample(scale_factor=2, mode='nearest') >>> m(input) tensor([[[[ 1., 1., 2., 2.], [ 1., 1., 2., 2.], [ 3., 3., 4., 4.], [ 3., 3., 4., 4.]]]]) >>> m = nn.Upsample(scale_factor=2, mode='bilinear') # align_corners=False >>> m(input) tensor([[[[ 1.0000, 1.2500, 1.7500, 2.0000], [ 1.5000, 1.7500, 2.2500, 2.5000], [ 2.5000, 2.7500, 3.2500, 3.5000], [ 3.0000, 3.2500, 3.7500, 4.0000]]]]) >>> m = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True) >>> m(input) tensor([[[[ 1.0000, 1.3333, 1.6667, 2.0000], [ 1.6667, 2.0000, 2.3333, 2.6667], [ 2.3333, 2.6667, 3.0000, 3.3333], [ 3.0000, 3.3333, 3.6667, 4.0000]]]]) >>> # Try scaling the same data in a larger tensor >>> >>> input_3x3 = torch.zeros(3, 3).view(1, 1, 3, 3) >>> input_3x3[:, :, :2, :2].copy_(input) tensor([[[[ 1., 2.], [ 3., 4.]]]]) >>> input_3x3 tensor([[[[ 1., 2., 0.], [ 3., 4., 0.], [ 0., 0., 0.]]]]) >>> m = nn.Upsample(scale_factor=2, mode='bilinear') # align_corners=False >>> # Notice that values in top left corner are the same with the small input (except at boundary) >>> m(input_3x3) tensor([[[[ 1.0000, 1.2500, 1.7500, 1.5000, 0.5000, 0.0000], [ 1.5000, 1.7500, 2.2500, 1.8750, 0.6250, 0.0000], [ 2.5000, 2.7500, 3.2500, 2.6250, 0.8750, 0.0000], [ 2.2500, 2.4375, 2.8125, 2.2500, 0.7500, 0.0000], [ 0.7500, 0.8125, 0.9375, 0.7500, 0.2500, 0.0000], [ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]]]]) >>> m = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True) >>> # Notice that values in top left corner are now changed >>> m(input_3x3) tensor([[[[ 1.0000, 1.4000, 1.8000, 1.6000, 0.8000, 0.0000], [ 1.8000, 2.2000, 2.6000, 2.2400, 1.1200, 0.0000], [ 2.6000, 3.0000, 3.4000, 2.8800, 1.4400, 0.0000], [ 2.4000, 2.7200, 3.0400, 2.5600, 1.2800, 0.0000], [ 1.2000, 1.3600, 1.5200, 1.2800, 0.6400, 0.0000], [ 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]]]])
參數:
相關用法
- Python PyTorch UpsamplingBilinear2d用法及代碼示例
- Python PyTorch UpsamplingNearest2d用法及代碼示例
- Python PyTorch UnBatcher用法及代碼示例
- Python PyTorch Unflatten用法及代碼示例
- Python PyTorch Unfold用法及代碼示例
- Python PyTorch Uniform用法及代碼示例
- Python PyTorch UnZipper用法及代碼示例
- Python PyTorch frexp用法及代碼示例
- Python PyTorch jvp用法及代碼示例
- Python PyTorch cholesky用法及代碼示例
- Python PyTorch vdot用法及代碼示例
- Python PyTorch ELU用法及代碼示例
- Python PyTorch ScaledDotProduct.__init__用法及代碼示例
- Python PyTorch gumbel_softmax用法及代碼示例
- Python PyTorch get_tokenizer用法及代碼示例
- Python PyTorch saved_tensors_hooks用法及代碼示例
- Python PyTorch positive用法及代碼示例
- Python PyTorch renorm用法及代碼示例
- Python PyTorch AvgPool2d用法及代碼示例
- Python PyTorch MaxUnpool3d用法及代碼示例
- Python PyTorch Bernoulli用法及代碼示例
- Python PyTorch Tensor.unflatten用法及代碼示例
- Python PyTorch Sigmoid用法及代碼示例
- Python PyTorch Tensor.register_hook用法及代碼示例
- Python PyTorch ShardedEmbeddingBagCollection.named_parameters用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.nn.Upsample。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。