Да, он проходит через заданный димер (размерность) тензора и собирает в новый тензор значения, указанные в указанном индексе. Так что, если бы у меня был 1D тензор (это разрешено?) Как
MyValues = torch.tensor([0,2,4,6,8])
и сделал
torch.gather(MyValues, 0, torch.tensor([0,1,3]))
Я бы ожидал вернуть одномерный тензор, содержащий [0,2,6]
. то есть значения, расположенные в позициях 0
, 1
и 3
.
Таким образом, он просто выбирает содержимое, используя тензор index
в качестве указателя на местоположения содержимого, которое нужно извлечь из тензора input
.
dim
- это измерение, по которому вы хотите индексировать. Так что для 2D это даст вам возможность индексировать по строкам или столбцам, и вы можете экстраполировать это на столько измерений, сколько захотите.