如何在张量的最后2维上进行矩阵乘法

时间:2017-06-14 12:10:29

标签: numpy tensorflow

说我有一个形状(3,5,3)张量如下:

  x = [[[ 4.,  6.,  6.],
    [ 0.,  0.,  3.],
    [ 6.,  6.,  5.],
    [ 4.,  1.,  8.],
    [ 3.,  6.,  7.]],

   [[ 4.,  0.,  5.],
    [ 4.,  7.,  2.],
    [ 4.,  5.,  3.],
    [ 4.,  2.,  1.],
    [ 3.,  4.,  4.]],

   [[ 0.,  3.,  4.],
    [ 6.,  7.,  5.],
    [ 1.,  2.,  2.],
    [ 3.,  8.,  3.],
    [ 8.,  5.,  7.]]]

形状(3, 3, 4)张量如此:

y = [[[ 3.,  2.,  5.,  4.],
    [ 8.,  7.,  1.,  8.],
    [ 4.,  0.,  5.,  3.]],

   [[ 8.,  7.,  7.,  3.],
    [ 5.,  4.,  0.,  1.],
    [ 6.,  5.,  4.,  4.]],

   [[ 7.,  0.,  1.,  2.],
    [ 7.,  5.,  0.,  6.],
    [ 7.,  5.,  4.,  1.]]]

如何进行矩阵乘法,以便得到的矩阵具有(3, 5, 4)

的形状

因此矩阵的第一个元素由

的矩阵乘法给出
[[ 4.,  6.,  6.],
[ 0.,  0.,  3.],
[ 6.,  6.,  5.],
[ 4.,  1.,  8.],
[ 3.,  6.,  7.]]

[[ 3.,  2.,  5.,  4.] 
 [ 8.,  7.,  1.,  8.]
 [ 4.,  0.,  5.,  3.]]

我尝试使用tf.tensordot,如:

z = tf.tensorflow(x, y, axes = [[2],[1]])

我相信x的第3轴与y的第2轴相乘,但它给出了一个形状张量(3, 5, 3, 4)。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在阅读tf.matmul文档之后看起来很傻,因为内部尺寸匹配我可以做tf.matmul(x,y)并且它给了我答案