Tensorflow中的欧几里德距离,转换矩阵

时间:2017-08-02 07:34:47

标签: python-3.x tensorflow tensorflow-gpu

我有一个knn分类项目,需要用张量流计算欧氏距离进行比较。

没有张量流的原始代码是这样的:



def euclidean_distance(self,x1, x2):
        distance = 0.0
        for i in range(len(x1)):
            distance += pow( x1[i] - x2[i], 2)
        print(distance)
        return math.sqrt(distance)




和tensorflow是这样的:



distance = 0.0
        for i in range(len(x1)):
            distance = tf.negative(tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(x1, x2)))))
        return distance




这是对的吗?由于代码距离变得张量,我需要一种方法将张量转换为正常矩阵。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

为了获得nd数组(矩阵),您需要像打击

一样运行图形
session=tf.Session()
nd_distance=session.run(distance)

您必须将代码更改为

......
......
     distance = tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(x1, x2))))
     nd_distance=session.run(distance)
     print (nd_distance)
     return nd_distance

我不认为需要tf.negative功能和for loop