tensorflow - 如何使用 Tensorflow 获得数组的所有元素与同一数组中所有其他元素的余弦相似度

标签 tensorflow cosine-similarity

给定一个形状为 (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/

相关文章:

python - 将图像分割类输出转换为 tensorflow 中的图像

python - ubuntu中gpu上的tensorflow安装

python Pandas : Finding cosine similarity of two columns

algorithm - 计算两个对象列表之间的相似度

tensorflow - 在具有多个 Keras 模型的 TF2 自定义训练循环中应用梯度的正确方法

tensorflow - 如何在 tensorflow 中将 TextVectorization 保存到磁盘?

python - 如何在 Tensorflow RNN 中构建嵌入层?

python - 用权重标准化排名分数

python - 无法理解余弦相似度的python函数

machine-learning - 如何计算集群的一致性/质量?