Косинусоподобие строк вектора и матрицы в pytorch - PullRequest
0 голосов
/ 04 января 2019

В pytorch у меня есть кратные (масштаб сотен тысяч) 300 дим-векторов (которые, я думаю, я должен загрузить в матрицу), я хочу отсортировать их по сходству косинусов с другим вектором и извлечь топ-1000. Я хочу избежать цикла, так как это занимает много времени. Я искал эффективное решение.

1 Ответ

0 голосов
/ 04 января 2019

Вы можете использовать torch.nn.functional.cosine_simility функцию для вычисления косинусного сходства. И torch.argsort для извлечения топ 1000.

Вот пример:

x = torch.rand(10000,300)
y = torch.rand(1,300)
dist = F.cosine_similarity(x,y)
index_sorted = torch.argsort(dist)
top_1000 = index_sorted[:1000]

Обратите внимание на форму y, не забудьте изменить форму перед вызовом функции подобия. Также обратите внимание, что argsort просто возвращает индексы ближайших векторов. Чтобы получить доступ к самим этим векторам, просто напишите x[top_1000], который вернет матрицу в форме (1000,300).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...