PyTorch извлекает тензорные элементы с булевой маской (с сохранением размеров) - PullRequest
0 голосов
/ 17 июня 2020

Скажем, у меня есть тензор PyTorch 2x2, и я также создал логический тензор той же размерности (2x2). Я хочу использовать это как маску.

Например, если у меня есть тензор:

tensor([[1, 3],
        [4, 7]])

И если моя маска:

tensor([[ True, False],
        [False,  True]])

Я хочу использовать эту маску для получения тензора, в котором элементы, соответствующие True из моего исходного тензора, сохраняются, тогда как элементы, соответствующие False, устанавливаются на ноль в выходном тензоре.

Ожидаемый результат:

tensor([[1, 0],
        [0, 7]])

Любая помощь приветствуется. Спасибо!

1 Ответ

1 голос
/ 17 июня 2020

Предположим, у вас есть:

t = torch.Tensor([[1,2], [3,4]])
mask = torch.Tensor([[True,False], [False,True]])

Вы можете использовать маску:

masked_t = t * mask

, и результат будет:

tensor([[1., 0.],
        [0., 4.]])
...