我有两个矩阵: -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)形状然后进行逐元素乘法的解决方案。但是也许有更好的解决方案
答案 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
。