Выбор по маске в PyTorch
Чтобы получить все значения,
для которых маска истинна,
служит функция masked_select.
Логический тензор должен совпадать
по форме с исходным; результат
всегда вытягивается в один ряд
в порядке обхода ячеек.
Создадим таблицу, построим маску «больше нуля» и выведем отобранные числа:
import torch
values = torch.tensor([[1, 0, 3], [0, 5, 6]])
positive = values > 0
only_positive = torch.masked_select(values, positive)
print(only_positive) # выведет tensor([1, 3, 5, 6])
Маску можно задать явно той же формы, что и данные:
import torch
values = torch.tensor([10, 20, 30, 40])
flags = torch.tensor([True, False, True, False])
chosen = torch.masked_select(values, flags)
print(chosen) # выведет tensor([10, 30])
Создайте ряд [-1, 2, 0, 4],
отберите ячейки, где число
строго больше нуля, и выведите
длину получившегося ряда.
Создайте таблицу [[7, 0], [0, 8]]
и маску истинности только
во второй ячейке первого ряда
и в первой ячейке второго ряда;
выведите все отмеченные значения
одним рядом.
Создайте ряд из чисел 1
до 5 и логический ряд
[False, True, True, False, True];
соберите отмеченные числа
и выведите их через пробел
в одной строке.