Tensorflow 中 matmul 和 multiply 的区别

The difference between matmul and multiply in Tensorflow

Posted by alovn on April 17, 2019

tf.multiply

multiply表示点积,这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法。还需要注意的两个相乘的数必须有相同的数据类型,不然会报错的。

tf.matmul

matmul表示矩阵乘法,它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义,否则也会报错: ValueError: Dimensions must be equal。

输入的必须是矩阵,两个矩阵必须是同样的类型,返回的是矩阵的乘积。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import tensorflow as tf
x = tf.constant([ [1,2,3], [4,5,6], [7,8,9] ])
y = tf.constant([ [1,2,3], [3,2,1], [1,2,3] ])
z = tf.multiply(x, y)
z1 = tf.matmul(x, y)
with tf.Session() as sess:
    print sess.run(z)
    print sess.run(z1)

输出:
    //z
    [[ 1  4  9]
    [12 10  6]
    [ 7 16 27]]
    //z1
    [[10 12 14]
    [25 30 35]
    [40 48 56]]