Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Tensorflow获得数组中所有元素与同一数组中所有其他元素的余弦相似性_Tensorflow_Cosine Similarity - Fatal编程技术网

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

如何使用Tensorflow获得数组中所有元素与同一数组中所有其他元素的余弦相似性,tensorflow,cosine-similarity,Tensorflow,Cosine Similarity,给定一个形状为(1000000,512)的句子嵌入数组(512个数组),我如何计算该数组的100万个句子嵌入中的每一个相对于该数组的每一个其他句子嵌入的余弦相似性,理想情况下使用tensorflow,所以我可以试着用GPU来加速它?余弦相似性是一种度量标准,用于衡量文档的相似程度,而不考虑文档的大小。从数学上讲,它测量在多维空间中投影的两个向量之间的夹角的余弦。所以,数组和自身的余弦相似性总是-1 import tensorflow as tf y_true = [[2., 8.], [1.,

给定一个形状为(1000000,512)的句子嵌入数组(512个数组),我如何计算该数组的100万个句子嵌入中的每一个相对于该数组的每一个其他句子嵌入的余弦相似性,理想情况下使用tensorflow,所以我可以试着用GPU来加速它?

余弦相似性是一种度量标准,用于衡量文档的相似程度,而不考虑文档的大小。从数学上讲,它测量在多维空间中投影的两个向量之间的夹角的余弦。所以,数组和自身的余弦相似性总是-1

import tensorflow as tf
y_true = [[2., 8.], [1., 7.]]
y_pred = [[2., 8.], [1., 7.]]
cosine_loss = tf.keras.losses.CosineSimilarity(axis=1)
print(cosine_loss(y_true, y_pred).numpy())

输出:-1.0000001

通过这种方式,您可以计算余弦距离

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')

对不起,也许我问的问题不对。我想要的是将每个元素与数组中的每个其他元素进行比较。给定句子嵌入[a,b,c]我想知道a和b&c有多相似,b和a&c有多相似,c和a&b有多相似