我有一个张量 A ,大小为(1, L ),还有一个3D张量 B ,大小为( N , K , L )。显然,在 B 中有大小为( K , L )的 N 个数组,称为< strong> C 在这里。
现在,如何计算之间的平均欧几里德距离( A 与 C 的每一行的平均距离) A 和每个 C ,而不会重复 C 中的每一行,最后返回一个大小为(1, N )?
答案 0 :(得分:1)
您可以使用tf.norm
和tf.reduce_mean
来做到这一点:
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
编辑:import tensorflow as tf
with tf.Graph().as_default(), tf.Session() as sess:
a = tf.placeholder(tf.float32, [1, None])
b = tf.placeholder(tf.float32, [None, None, None])
dist = tf.reduce_mean(tf.norm(b - a, axis=2), axis=1)
print(sess.run(dist, feed_dict={a: [[1, 2, 3]],
b: [[[ 4, 5, 6], [ 7, 8, 9]],
[[10, 11, 12], [13, 14, 15]]]}))
# [ 7.7942286 18.186533 ]
中有多个向量的情况的变体:
a