当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch Tensor.align_as用法及代码示例


本文简要介绍python语言中 torch.Tensor.align_as 的用法。

用法:

align_as(other) → Tensor

置换self 张量的维度以匹配other 张量中的维度顺序,为任何新名称添加size-one dims。

此操作对于按名称进行显式广播很有用(参见示例)。

self 的所有暗淡必须命名才能使用此方法。结果张量是原始张量的视图。

self 的所有维度名称都必须存在于 other.names 中。 other 可能包含不在 self.names 中的命名维度;对于每个新名称,输出张量都有一个 size-one 维度。

要将张量对齐到特定顺序,请使用 align_to()

例子:

# Example 1: Applying a mask
>>> mask = torch.randint(2, [127, 128], dtype=torch.bool).refine_names('W', 'H')
>>> imgs = torch.randn(32, 128, 127, 3, names=('N', 'H', 'W', 'C'))
>>> imgs.masked_fill_(mask.align_as(imgs), 0)


# Example 2: Applying a per-channel-scale
>>> def scale_channels(input, scale):
>>>    scale = scale.refine_names('C')
>>>    return input * scale.align_as(input)

>>> num_channels = 3
>>> scale = torch.randn(num_channels, names=('C',))
>>> imgs = torch.rand(32, 128, 128, num_channels, names=('N', 'H', 'W', 'C'))
>>> more_imgs = torch.rand(32, num_channels, 128, 128, names=('N', 'C', 'H', 'W'))
>>> videos = torch.randn(3, num_channels, 128, 128, 128, names=('N', 'C', 'H', 'W', 'D'))

# scale_channels is agnostic to the dimension order of the input
>>> scale_channels(imgs, scale)
>>> scale_channels(more_imgs, scale)
>>> scale_channels(videos, scale)

警告

命名张量 API 是实验性的,可能会发生变化。

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.Tensor.align_as。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。