>我有两个矩阵: - 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(形状,然后进行元素乘法。但也许有更好的解决方案
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 的每一行 i 首先将 B[i, 0] 乘以 A[i] 中的所有元素,然后 B[i, 1] 乘以 A[i] 的所有元素等(您可能需要仔细检查这一点(。如果你想要相反的方式,你可以在第一部分中交换tf.newaxis
。