Как выполнить многомерную причудливую индексацию в PyTorch? ⇐ Python

Программы на Python
Anonymous
Как выполнить многомерную причудливую индексацию в PyTorch?

Сообщение Anonymous »

У меня есть 3D-тензор (

Код: Выделить всё

[batch_size, seq_length, hidden_dim]
) и 2D-список (

Код: Выделить всё

[batch_size, seq_length]
).
Я хочу использовать список для выбора этого тензора.
Например: форма 3D-тензора t [2, 5, 3] и форму двумерного списка l [2, 5].
Пусть t0 = t[0, :, :] и l0 = l[0]. Я хотел бы выбрать "".
То же самое для t1[l1] и т. д.
Я могу только думать о написании цикл for для достижения этой цели:

Код: Выделить всё

new_ts = []
for i in range(t.shape[0]):
new_t = t[i][l[i]]
new_ts.append(new_t)
new_t = torch.cat(new_ts, dim=2)
Должен быть более простой способ сделать это. Я также пробовал многомерное причудливое индексирование t[l], но синтаксис неверен и не работает.
Ищу жду ваших предложений.

Подробнее здесь: https://stackoverflow.com/questions/651 ... in-pytorch

Вернуться в «Python»