张量流 - 矩阵中点的欧氏距离

时间:2017-06-19 16:34:01

标签: python tensorflow

我有一个n * m张量,基本上代表n维欧几里德空间中的m个点。我想计算每个连续点之间的成对欧氏距离。

也就是说,如果我的列向量是点a,b,c等,我想计算euc(a,b),euc(b,c)等。

结果将是m-1长度1D-张量与每个成对的欧氏距离。

任何人都知道在TensorFlow中可以执行哪些操作?

2 个答案:

答案 0 :(得分:0)

好的,我发现了一些有用的东西。但是,如果有人有更好的解决方案,请告诉我。

def pairwise_euclidean_distance (input_layer):
    original_size = input_layer.get_shape().as_list()

    subtrahend = tf.pad(input_layer, [[0, 0], [1, 0], [0, 0], [0, 0]])
    subtrahend = tf.slice(subtrahend, [0, 0, 0, 0], original_size)

    distance = tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(input_layer, subtrahend)), axis=[2,3]))

    return distance

答案 1 :(得分:0)

您可以像下面那样简化距离计算。 因为两点之间向量的L2范数就是两点之间的距离。

def distance(point1, point2):
    l2_norm = tf.norm(point1-point2, ord='euclidean')
    return l2_norm