我有两个tensorflow对象,如下
batch = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3,2], name='batch')
vocab = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0,1.0,2.0,3.0,4.0,5.0,6.0], shape=[6,2], name='vocab')batch有3个向量,每个向量有2个维度。vocab有6个向量,每个向量都是2维的。我想计算每一对可能的向量之间的L1差(生成18个值)。例如,1,2的L1差值为
|1-1|+|2-2|, |1-3|+|2-4|, |1-5|+|2-6|, |1-1|+|2-2|, |1-3|+|2-4|, |1-5|+|2-6|,我如何使用tensorflow函数来实现这一点?得到的矩阵可以是6X3 (batch X could )。矩阵乘法似乎是生成矩阵的预期顺序的计算。但是,有没有办法覆盖矩阵乘法的底层操作呢?(即用差的绝对值覆盖分量乘法)?
发布于 2017-07-05 06:32:17
也许这个回答对你不再有用了,但是我最近遇到了这个使用L1和L2距离的k-nearest neighbors的例子。所以,我想,你的问题可以这样解决:
batch = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3,2], name='batch')
vocab = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0,1.0,2.0,3.0,4.0,5.0,6.0], shape=[6,2], name='vocab')
distance_L1 = tf.reduce_sum(tf.abs(tf.subtract(vocab, tf.expand_dims(batch,1))), axis=2)祝好运!
https://stackoverflow.com/questions/42223906
复制相似问题