Tensorflow tf.matmul示例不正确?

时间:2017-02-23 15:26:32

标签: python matrix tensorflow

我阅读了tf.matmul的官方文件 我理解第一个例子。 这是一个简单的[2,3] x [3,2]操作:

a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])

b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])

c = tf.matmul(a, b) => [[58 64]
                    [139 154]]

然而,第二个例子似乎很奇怪:

a = tf.constant(np.arange(1, 13, dtype=np.int32),
            shape=[2, 2, 3])

b = tf.constant(np.arange(13, 25, dtype=np.int32),
            shape=[2, 3, 2])

c = tf.matmul(a, b) => [[[ 94 100]
                     [229 244]],
                    [[508 532]
                     [697 730]]]

为什么允许形状[2,2,3]的矩阵乘以[2,3,2]?

1 个答案:

答案 0 :(得分:2)

来自同一页面(https://web.archive.org/web/20170223153510/https://www.tensorflow.org/api_docs/python/tf/matmul):

  

返回:       与Tensora相同类型的b,其中每个最内层矩阵都是       ab中相应矩阵的乘积,例如我摔倒       转置或伴随属性是False
      output [...,i,j] = sum_k(a [...,i,k] * b [...,k,j]),       对于所有指数i,j。

因此,允许形状[2,2,3]的矩阵与[2,3,2]相乘。