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.]]
![74cedb5fc613c05cb26be161fddb90d9.png](https://i-blog.csdnimg.cn/blog_migrate/eeec4bb6ca68bf74577b9d78672d33cd.jpeg)
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.]]
![39a22b9aeb480bb0c0577833b1899071.png](https://i-blog.csdnimg.cn/blog_migrate/919465cf18726ca30440158a9f2c85d0.jpeg)