TensorFlow中矩阵乘操作tf.matmul(或tf.linalg.matmul)和矩阵元素乘tf.multiply(或tf.math.multiply)用法对比

一、环境

TensorFlow API r1.12

CUDA 9.2 V9.2.148

cudnn64_7.dll

Python 3.6.3

Windows 10

二、官方说明

tf.linalg.matmul或tf.matmul:矩阵乘

tf.linalg.matmul(
    a,
    b,
    transpose_a=False,
    transpose_b=False,
    adjoint_a=False,
    adjoint_b=False,
    a_is_sparse=False,
    b_is_sparse=False,
    name=None
)

输入:

(1)张量a:支持张量类型float16, float32, float64, int32, complex64,complex128,阶>1

(2)张量b:支持张量类型同张量a

(3)transpose_a:布尔型参数,如果是True,矩阵乘之前先执行转置

(4)transpose_b:布尔型参数,如果是True,矩阵乘之前先执行转置

(5)adjoint_a:布尔型参数,如果是True,矩阵乘之前先执行共轭转置

(6)adjoint_b:布尔型参数,如果是True,矩阵乘之前先执行共轭转置

(7)a_is_sparse:布尔型参数,如果是True,矩阵a被当做稀疏矩阵

(8)b_is_sparse:布尔型参数,如果是True,矩阵b被当做稀疏矩阵

(9)name:可选参数,操作的名称

返回结果:

(1)与输入张量a和输入张量b相同类型的张量,返回的结果张量最内层矩阵是输入矩阵a和输入矩阵b相应矩阵的乘积。

tf.math.multiply或tf.multiply:矩阵元素乘

tf.math.multiply(
    x,
    y,
    name=None
)

输入:

(1)张量x:数据类型可以是bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128

(2)张量y:数据类型跟x一样

返回结果:

(1)张量:跟输入张量同一种数据类型

三、实例

(1)矩阵乘(tf.linalg.matmul或tf.matmul)

>>> x = tf.constant([[1,2,3],[4,5,6]])
>>> sess = tf.Session()
>>> sess.run(tf.shape(x))
# array([2, 3])
>>> y = tf.constant([[1,2],[3,4],[5,6]])
>>> sess.run(tf.shape(y))
# array([3, 2])
>>> result = tf.matmul(x,y)
>>> sess.run(tf.shape(result))
# array([2, 2])

(2)矩阵元素乘(tf.math.multiply或tf.multiply)

>>> import tensorflow as tf
>>> x = tf.constant([1,2,3])
>>> y = tf.constant([4,5,6])
>>> result1 = tf.multiply(x,y)
>>> result1
<tf.Tensor 'Mul:0' shape=(3,) dtype=int32>
>>> sess = tf.Session()
>>> sess.run(result1)
array([ 4, 10, 18])

猜你喜欢

转载自blog.csdn.net/sdnuwjw/article/details/85016604