本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。