當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。