Python tensorflow:如何计算批次(大小为B X DIM的矩阵)和词汇表(大小为V X DIM的矩阵)之间的L1差异?

Python tensorflow:如何计算批次(大小为B X DIM的矩阵)和词汇表(大小为V X DIM的矩阵)之间的L1差异?,python,tensorflow,Python,Tensorflow,我有两个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') 批次有3个向量,每个向量有2个维度。vocab有6个向量,每个向量有2个维度。 我想计算每

我有两个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')
批次有3个向量,每个向量有2个维度。vocab有6个向量,每个向量有2个维度。 我想计算每个可能的向量对之间的L1差(生成18个值)。 e、 g.[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函数实现这一点?得到的矩阵可以是6 X 3(批次X B)。矩阵乘法似乎是生成矩阵预期阶数的计算。但是有没有一种方法可以覆盖矩阵乘法的基本运算呢?(即用差的绝对值覆盖组件式乘法)

可能这个响应对您不再有用,但我最近遇到了这个L1和L2距离的示例。 所以,我想,你的问题可以通过以下方式解决:

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)

祝你好运

这可能是一个与广播相关的话题(比如在numpy)。您可以查看以下内容:。我还没有试过这个(你会注意到它是实验性的)。你用了
tf.matmul
而不是
*
(你提到的舒尔产品是哪个?@drpng,谢谢。我试过了,但没用。