【问题标题】:From size (1000,9) and (1000,10) matrix to matrix of size (1000,90)从 (1000,9) 和 (1000,10) 大小的矩阵到 (1000,90) 大小的矩阵
【发布时间】:2019-01-29 13:17:45
【问题描述】:

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

【问题讨论】:

  • 我认为 reshape 是我正在寻找将第一个张量重塑为一维张量的操作。然后可以应用广播

标签: tensorflow linear-algebra matrix-multiplication


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多