从大小(1000,9)和(1000,10)矩阵到大小(1000,90)的矩阵

时间:2018-08-23 08:09:03

标签: tensorflow linear-algebra matrix-multiplication

我有两个矩阵: -A(1000,9) -B(1000,10)

现在A [0,0]应该乘以B [0,0],B [0,1],... B [0,9]

A [0,1]应乘以B [0,0],B [0,1],... B [0,9]

A [1,0]应乘以B [1,0],B [1,1],... B [1,9]

结果矩阵的大小为(1000,90)

在Tensorflow中仅矩阵运算而不循环就可能吗? 根据一些广播规则,我认为应该可以,但是我还没有答案。

tf.tile可能是将两个张量平铺为(1000,90)形状然后进行逐元素乘法的解决方案。但是也许有更好的解决方案

1 个答案:

答案 0 :(得分:3)

C = A[:, tf.newaxis, :] * B[:, :, tf.newaxis]

这给我们一个[1000,10,9]张量,其中元素[i,j,k]为A [i,k] * B [i,j]。然后我们重塑

C = tf.reshape(C, [tf.shape(A)[0], -1])

至[1000,90]。如果我没记错的话,C的每一行都将首先将B [i,0]乘以A [i]中的所有元素,然后将B [i,1]乘以A [i]的所有元素,等等(您可能需要再次检查)。如果需要另一种方法,则可以在第一部分中交换tf.newaxis