余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度,在计算机视觉中,余弦距离一般用于度量两个特征向量之间的相似度,其计算公式如下:

当两个特征向量的方向在特征空间中相同,其夹角为0,余弦值为1,此时两个特征向量完全相似。故,余弦距离越大,两特征向量越相似,范围在[-1,1]。

在tensorflow中如何计算两个特征向量集合之间两两点之间的余弦距离呢?

假设,两特征向量集合X1(k,n),X2(m,n),计算代码如下:

import tensorflow as tf
def get_cos_distance(X1, X2):
    # calculate cos distance between two sets
    # more similar more big
    (k,n) = X1.shape
    (m,n) = X2.shape
    # 求模
    X1_norm = tf.sqrt(tf.reduce_sum(tf.square(X1), axis=1))
    X2_norm = tf.sqrt(tf.reduce_sum(tf.square(X2), axis=1))
    # 内积
    X1_X2 = tf.matmul(X1, tf.transpose(X2))
    X1_X2_norm = tf.matmul(tf.reshape(X1_norm,[k,1]),tf.reshape(X2_norm,[1,m]))
    # 计算余弦距离
    cos = X1_X2/X1_X2_norm
    return cos

GitHub 加速计划 / te / tensorflow
184.55 K
74.12 K
下载
一个面向所有人的开源机器学习框架
最近提交(Master分支:2 个月前 )
a49e66f2 PiperOrigin-RevId: 663726708 2 个月前
91dac11a This test overrides disabled_backends, dropping the default value in the process. PiperOrigin-RevId: 663711155 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐