Предположим, у меня есть тензор a
и тензор b
import torch
a = torch.tensor([[[ 0.8856, 0.1411, -0.1856, -0.1425],
[-0.0971, 0.1251, 0.1608, -0.1302],
[-0.0901, 0.3215, 0.1763, -0.0412]],
[[ 0.8856, 0.1411, -0.1856, -0.1425],
[-0.0971, 0.1251, 0.1608, -0.1302],
[-0.0901, 0.3215, 0.1763, -0.0412]]])
b = torch.tensor([[0,
2,
1],
[0,
2,
1]])
Теперь я бы хотел выбрать индексы из тензора a
, где значение тензора b
равно не 0.
pred_masks = ( b != 0 )
c = torch.masked_select( a, (pred_masks == 1))
И, конечно, я получаю ожидаемую ошибку.
----> 1 c = torch.masked_select( a, (pred_masks == 1))
RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 2
Это вызвано вложенным списком, содержащим 4 элемента. Однако необходимо выбрать все значения вложенного списка по индексу x в тензоре a
, соответствующем индексу x в тензоре b
.
Буду благодарен за любую подсказку или ответ.