【发布时间】:2016-09-30 05:53:13
【问题描述】:
最近,我一直在尝试找到最接近嵌入的单词。两种最值得注意的方法是余弦距离或欧几里得距离。
我正在尝试找到如何有效地计算形状为 [batch_size x embedding_size] 的张量的余弦距离
一种方法是解包张量并计算余弦距离
#embedding is shape [vocab_size x embedding size]
array_list = tf.unpack(batch_array)
word_class_list = tf.unpack(embedding)
index_list_of_closest_word = []
for eacharray in array_list:
list_of_distances = []
for eachwordclass in word_class_list:
list_of_distances.append(cosine_distance(eacharray, eachwordclass))
index_list_of_closest_word.append(tf.argmax(tf.pack(list_of_distances)))
但是,这种方法效率极低。是否有更有效的方式来做到这一点?我知道 word2vec 的速度非常快,而 tensorflow 凭借 gpu 的强大功能,应该能够并行执行这些批量计算。
谢谢!
【问题讨论】:
标签: distance tensorflow embedding