0、张量运算的基本法则
- 相同大小 Tensor 之间的任何算术运算都会将运算应用到元素级
- 不同大小 Tensor(要求dimension 0 必须相同) 之间的运算叫做广播(broadcasting)
- Tensor 与 Scalar(0维 tensor) 间的算术运算会将那个标量值传播到各个元素
- Note: TensorFLow 在进行数学运算时,一定要求各个 Tensor 数据类型一致
1、tf.multiply和tf.matmul的区别
tf.multiply是元素级别的相乘,tf.matmul是矩阵的乘法
(1)元素乘法tf.multiply
tf.math.multiply(x,y,name=None)
x:类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
y:类型跟张量x相同的张量。
name:操作的名字
返回值(元素级别的相乘): x * y element-wise
注意:
①multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意与下面matmul的区别
②两个相乘的数必须有相同的数据类型,否则就会报错
(2)矩阵乘法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
)
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中的相应矩阵的乘积。