我觉得我在这里遗漏了一些明显的东西,因为我找不到任何关于这个的讨论。我想对单词生成网络的 GloVe 嵌入进行大量反向查找(最近邻距离搜索)。我目前只是在 cpu 上遍历词汇表。我已经使用进程池加快了速度,如下面的片段所示,但对于大型词汇来说仍然非常慢。
有没有办法使用 cuda 将其移至 GPU?我还读到有一种方法可以将这种事情变成一个大矩阵运算......任何参考都将不胜感激。谢谢!
glove = torchtext.vocab.GloVe(name='6B', dim=wordDim)
def closest(vec):
dists = [(w, torch.dist(vec, glove.vectors[glove.stoi[w]] for w in glove.itos]
return sorted(dists, key=lambda t: t[1])[0]
output = # word vectors…
# using a process pool to parallelize the lookup
pool=ProcessPoolExecutor(max_workers=8)
predictedWords = [w for w in list(pool.map(closestWord, output)]