【发布时间】:2018-03-28 17:18:52
【问题描述】:
我正在尝试计算 Tensorflow 中两个二进制区域/体积/超体积中所有点之间的成对距离。
例如在 2D 中,这些区域被定义为具有 1 和 0 的二进制张量:
input1 = tf.constant(np.array([[1,0,0], [0,1,0], [0,0,1]))
input2 = tf.constant(np.array([[0,1,0], [0,0,1], [0,1,0]))
input1 有 3 分,input2 有 2 分。
到目前为止,我已经设法将二进制张量转换为空间坐标数组:
coord1 = tf.where(tf.cast(input1, tf.bool))
coord2 = tf.where(tf.cast(input2, tf.bool))
其中,coord1 将具有shape=(3,2),coord2 将具有shape=(2,2)。第一个维度指点的数量,第二个维度指它们的空间坐标(在本例中为 2D)。
我想要的结果是一个带有shape=(6, ) 的张量,以及区域中所有点之间的成对欧几里得距离。
示例(距离的顺序可能不正确):
output = [1, sqrt(5), 1, 1, sqrt(5), 1]
由于 TensorFlow 在循环方面不是很好,而且在我的实际应用中,每个张量中的点数是未知的,我想我可能在这里遗漏了一些线性代数。
【问题讨论】:
标签: python tensorflow linear-algebra euclidean-distance