2017-06-19 80 views
0

我有一个n * m张量,它基本上代表了n维欧氏空间中的m个点。我想要计算每个连续点之间的两两欧式距离。Tensorflow - 矩阵中欧几里德距离的点

也就是说,如果我的列向量的点a,b,c等,我想计算EUC(A,B),EUC(B,C)等

结果将是具有每对欧式距离的m-1长度1D张量。

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

回答

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 
相关问题