专栏首页python前行者tf.matmul() 和tf.multiply()

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)两个相乘的数必须有相同的数据类型,不然就会报错。

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。  引发错误:  ValueError: 如果transpose_a 和 adjoint_a, 或 transpose_b 和 adjoint_b 都被设置为真

  • 程序示例:
import tensorflow as tf

#两个矩阵对应元素各自相乘
x=tf.constant([[1.,2.,3.],[1.,2.,3.],[1.,2.,3.]])
y=tf.constant([[0.,0.,1.],[0.,0.,1.],[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.],[1.,2.,3.],[1.,2.,3.]])
y2=tf.constant(2.0)
#注意这里x,y必须要有相同的数据类型,不然就会因为数据类型不匹配报错
z2=tf.multiply(x2,y2)

#两个矩阵相乘
x3=tf.constant([[1.,2.,3.],[1.,2.,3.],[1.,2.,3.]])
y3=tf.constant([[0.,0.,1.],[0.,0.,1.],[0.,0.,1.]])
#注意这里x,y要满足矩阵相乘的格式要求
z3=tf.matmul(x3,y3)

with tf.Session() as sess:
    print(sess.run(z))
    print(sess.run(z1))
    print(sess.run(z2))
    print(sess.run(z3))
  • 运行结果:
[[0. 0. 3.]
 [0. 0. 3.]
 [0. 0. 3.]]

2

[[2. 4. 6.]
 [2. 4. 6.]
 [2. 4. 6.]]

[[0. 0. 6.]
 [0. 0. 6.]
 [0. 0. 6.]]

注意: 在TensorFlow的世界里,变量的定义和初始化是分开的,所有关于图变量的赋值和计算都要通过tf.Session的run来进行。想要将所有图变量进行集体初始化时应该使用tf.global_variables_initializer。

参考:https://www.cnblogs.com/AlvinSui/p/8987707.html https://www.jianshu.com/p/b6be1cacd94c

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Tensorflow模型保存和读取tf.train.Saver

    然后,在训练循环中,定期调用 saver.save() 方法,向文件夹中写入包含了当前模型中所有可训练变量的 checkpoint 文件。

    周小董
  • tf.Variable()函数

    tf.Variable(initializer,name),参数initializer是初始化参数,name是可自定义的变量名称,用法如下:

    周小董
  • TensorFlow练习3: RNN, Recurrent Neural Networks

    前文《使用Python实现神经网络》和《TensorFlow练习1: 对评论进行分类》都是简单的Feed-forward Neural Networks(FNN...

    周小董
  • 资源 | TensorFlow极简教程:创建、保存和恢复机器学习模型

    选自Github 机器之心编译 参与:Jane W、李泽南 TensorFlow 是一个由谷歌发布的机器学习框架,在这篇文章中,我们将阐述 TensorFlow...

    机器之心
  • java学习路线图(2019最新版)

    2019年最新Java学习路线图, 路线图的宗旨就是分享,专业,便利,让喜爱Java的人,都能平等的学习。从今天起不要再找借口,不要再说想学Java却没有资源,...

    动力节点Java学院
  • docker启动第一个网络时遇到错误

    docker和docker-ce都安装正确了,但是运行不了,是缺少cli,pull拉去不到,要docker login但是设置用户组的时候没让你设置密码,拉去不...

    用户7122978
  • 学习笔记TF063:TensorFlow Debugger

    TensorFlow Debugger(tfdbg),TensorFlow专用调试器。用断点、计算机图形化展现实时数据流,可视化运行TensorFlow图形内部...

    利炳根
  • leetcode443. String Compression

    对字符串进行简单的压缩操作,压缩的规则是,如果出现多个重复的字母,则用字母加上字母出现的字数进行表示。如果字母只出现一次,则不记录次数。

    眯眯眼的猫头鹰
  • 活用镜像,服务器安装调试 So Easy

    每次开通一个新的云服务器后,都要花比较多的时间上去一个一个软件的安装测试调整及打补丁。但后来发现在只要用镜像功能就可以完整地将之前的配置好的服务器镜像导入到新的...

    谭广健
  • 英特尔MKL加速AMD计算可达3倍?AMD Yes

    在此前的研究中,作者在 Matlab 社区发起讨论:如何能够使得 Matlab 在 AMD Ryzen/TR CPUs 使用快速代码路径,从而使得性能提升 25...

    机器之心

扫码关注云+社区

领取腾讯云代金券