我有一个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

这是对的吗?由于代码距离变得张量,我需要一种方法将张量转换为正常矩阵。
感谢任何帮助,谢谢!
答案 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