Tensorflow中tf.matmul() 和 tf.multiply() 的区别

1.tf.multiply()两个矩阵中对应元素各自相乘

格式:

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

参数:

  • x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
  • y: 一个类型跟张量x相同的张量。
  • 返回值: x * y element-wise.
  • 注意:

    (1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。

    (2)两个相乘的数必须有相同的数据类型,不然就会 错。

    示例代码:

    import tensorflow as tf

    #两个矩阵对应元素各自相乘

    x=tf.constant([[1.,2.,3.],[1.,2.,3.],[1.,2.,3.]])

    y=tf.constant([[1.,0.,0.],[0.,1.,0.],[0.,0.,1.]])

    #注意这里x,y必须要有相同的数据类型,不然就会因为数据类型不匹配 错

    z=tf.multiply(x,y)

    #两个数相乘

    x1=tf.constant(1)

    y1=tf.constant(2)

    #注意这里x,y必须要有相同的数据类型,不然就会因为数据类型不匹配 错

    z1=tf.multiply(x1,y1)

    #数和矩阵相乘

    x2=tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])

    y2=tf.constant(2.0)

    #注意这里x,y必须要有相同的数据类型,不然就会因为数据类型不匹配 错

    z2=tf.multiply(x2,y2)

    init = tf.global_variables_initializer()

    with tf.Session() as sess:

    sess.run(init)

    print(z.eval())

    print(z1.eval())

    print(z2.eval())

    输出结果:

    [[1. 0. 0.]

    [0. 2. 0.]

    [0. 0. 3.]]

    2

    [[ 2. 4. 6.]

    [ 8. 10. 12.]

    [14. 16. 18.]]

    2.tf.matmul()将矩阵a乘以矩阵b,生成a * b。

    格式:

    tf.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)

    参数:

  • a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。
  • b: 一个类型跟张量a相同的张量。
  • transpose_a: 如果为真, a则在进行乘法计算前进行转置。
  • transpose_b: 如果为真, b则在进行乘法计算前进行转置。
  • adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。
  • adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。
  • a_is_sparse: 如果为真, a会被处理为稀疏矩阵。
  • b_is_sparse: 如果为真, b会被处理为稀疏矩阵。
  • name: 操作的名字(可选参数)
  • 返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。
  • 注意:

    (1)输入必须是矩阵(或者是张量秩 >2的张量,表示成批的矩阵),并且其在转置之后有相匹配的矩阵尺寸。

    (2)两个矩阵必须都是同样的类型,支持的类型如下:float16, float32, float64, int32, complex64, complex128。

    示例代码:

    import tensorflow as tf

    #两个矩阵相乘

    x3=tf.constant([[1.,2.,3.],[1.,2.,3.],[1.,2.,3.]])

    y3=tf.constant([[1.,0.,0.],[0.,2.,0.],[0.,0.,3.]])

    #注意这里x,y要满足矩阵相乘的格式要求

    z3=tf.matmul(x3,y3)

    init = tf.global_variables_initializer()

    with tf.Session() as sess:

    sess.run(init)

    print(z3.eval())

    输出结果:

    [[1. 4. 9.]

    [1. 4. 9.]

    [1. 4. 9.]]

    ,欢迎交流 :)

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年6月15日
    下一篇 2019年6月15日

    相关推荐