给定一个形状为 (1000000, 512) 的句子嵌入数组(512 的数组),我如何计算数组的 100 万个句子嵌入中的每一个与数组的每个其他句子嵌入的余弦相似度,理想情况下使用 tensorflow,所以我可以尝试使用 GPU 加速它?
最佳答案
这样就可以计算出余弦距离
X = np.random.uniform(0,10, (100,512)).astype('float32')
X = tf.constant(X)
def compute_cosine_distances(a, b):
normalize_a = tf.nn.l2_normalize(a,1)
normalize_b = tf.nn.l2_normalize(b,1)
distance = 1 - tf.matmul(normalize_a, normalize_b, transpose_b=True)
return distance
compute_cosine_distances(X, X)
等于
from sklearn.metrics.pairwise import pairwise_distances
pairwise_distances(X.numpy(), metric='cosine')
关于tensorflow - 如何使用 Tensorflow 获得数组的所有元素与同一数组中所有其他元素的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62210489/