@ ,matmul ,dot ,multiply区别
tf.matmul(A,C) = np.dot(A,C) = A@C都属于矩阵乘法,而tf.multiply(A,C)= A*C 或者tf.multiply(A,A)= A**2 均属于对应元素乘法
np.cross为叉乘
元素乘法:np.multiply(a,b)
矩阵乘法:np.dot(a,b) 或np.matmul(a,b) 或 a.dot(b) 或直接用 a @ b !
唯独注意:*,在 np.array 中重载为元素乘法,在 np.matrix 中重载为矩阵乘法!
#对应元素相乘
>>> b=np.asarray([[1,1,3],[1,2,1],[2,2,3]])
>>> print(b**2)
[[1 1 9]
[1 4 1]
[4 4 9]]
>>> print(np.multiply(b,b))
[[1 1 9]
[1 4 1]
[4 4 9]]
#矩阵乘法
>>> print(np.matmul(b,b))
[[ 8 9 13]
[ 5 7 8]
[10 12 17]]
>>> print(np.dot(b,b))
[[ 8 9 13]
[ 5 7 8]
[10 12 17]]
>>> print(b@b)
[[ 8 9 13]
[ 5 7 8]
[10 12 17]]