【问题标题】:Calculate distance between n data points and k clusters in TensorFlow在TensorFlow中计算n个数据点和k个簇之间的距离
【发布时间】:2017-02-06 04:06:38
【问题描述】:
X 是一个数据点矩阵,n by d 在形状上。 W 是一个聚类点矩阵,k by d 在形状上。数据点i与每个簇之间的最小距离可以计算如下:
a_dist = tf.reduce_min(X[i] - W, 0);
张量流图的方法如何计算每个数据点和每个簇之间的距离?想到了一个 for 循环,但据我了解,tensorflow 中不存在这样的功能。
【问题讨论】:
标签:
tensorflow
distance
automatic-differentiation
【解决方案1】:
目前我发现的最有效的方法如下:
################
# Reshape Tensors for Calculation
################
samples = X;
centroids = W;
expanded_vectors = tf.expand_dims(samples, 0)
expanded_centroids = tf.expand_dims(centroids, 1)
################
# Define objective of model
################
distances = tf.reduce_sum( tf.square(tf.sub(expanded_vectors, expanded_centroids)), 2)
min_distances = tf.reduce_min(distances, 0);