本文共 3560 字,大约阅读时间需要 11 分钟。
multiply: element-wise,x,y维数必须相同,否则报错,Returns x * y element-wise.
matmul: Multiplies matrix a
by matrix b
, producing a
* b
. 个人理解和numpy库里的np.dot用法相同
tf库解释:
1.tf.multiply
tf.multiply( x, y, name=None )
Defined in .
See the guide:
Returns x * y element-wise.
NOTE: <a href="../tf/multiply"><code>tf.multiply</code></a>
supports broadcasting. More about broadcasting
Args:
x
: ATensor
. Must be one of the following types:bfloat16
,half
,float32
,float64
,uint8
,int8
,uint16
,int16
,int32
,int64
,complex64
,complex128
.y
: ATensor
. Must have the same type asx
.name
: A name for the operation (optional).
Returns:
A Tensor
. Has the same type as x
.
2.tf.matmul
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 )
Defined in .
See the guide:
Multiplies matrix a
by matrix b
, producing a
* b
.
The inputs must, following any transpositions, be tensors of rank >= 2 where the inner 2 dimensions specify valid matrix multiplication arguments, and any further outer dimensions match.
Both matrices must be of the same type. The supported types are: float16
, float32
, float64
, int32
, complex64
, complex128
.
Either matrix can be transposed or adjointed (conjugated and transposed) on the fly by setting one of the corresponding flag to True
. These are False
by default.
If one or both of the matrices contain a lot of zeros, a more efficient multiplication algorithm can be used by setting the corresponding a_is_sparse
or b_is_sparse
flag to True
. These are False
by default. This optimization is only available for plain matrices (rank-2 tensors) with datatypes bfloat16
or float32
.
For example:
# 2-D tensor `a` # [[1, 2, 3], # [4, 5, 6]] a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) # 2-D tensor `b` # [[ 7, 8], # [ 9, 10], # [11, 12]] b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2]) # `a` * `b` # [[ 58, 64], # [139, 154]] c = tf.matmul(a, b) # 3-D tensor `a` # [[[ 1, 2, 3], # [ 4, 5, 6]], # [[ 7, 8, 9], # [10, 11, 12]]] a = tf.constant(np.arange(1, 13, dtype=np.int32), shape=[2, 2, 3]) # 3-D tensor `b` # [[[13, 14], # [15, 16], # [17, 18]], # [[19, 20], # [21, 22], # [23, 24]]] b = tf.constant(np.arange(13, 25, dtype=np.int32), shape=[2, 3, 2]) # `a` * `b` # [[[ 94, 100], # [229, 244]], # [[508, 532], # [697, 730]]] c = tf.matmul(a, b) # Since python >= 3.5 the @ operator is supported (see PEP 465). # In TensorFlow, it simply calls the `tf.matmul()` function, so the # following lines are equivalent: d = a @ b @ [[10.], [11.]] d = tf.matmul(tf.matmul(a, b), [[10.], [11.]])
Args:
a
:Tensor
of typefloat16
,float32
,float64
,int32
,complex64
,complex128
and rank > 1.b
:Tensor
with same type and rank asa
.transpose_a
: IfTrue
,a
is transposed before multiplication.transpose_b
: IfTrue
,b
is transposed before multiplication.adjoint_a
: IfTrue
,a
is conjugated and transposed before multiplication.adjoint_b
: IfTrue
,b
is conjugated and transposed before multiplication.a_is_sparse
: IfTrue
,a
is treated as a sparse matrix.b_is_sparse
: IfTrue
,b
is treated as a sparse matrix.name
: Name for the operation (optional).
Returns:
A Tensor
of the same type as a
and b
where each inner-most matrix is the product of the corresponding matrices in a
and b
, e.g. if all transpose or adjoint attributes are False
:
output
[..., i, j] = sum_k (a
[..., i, k] * b
[..., k, j]), for all indices i, j.
Note
: This is matrix product, not element-wise product.
Raises:
ValueError
: If transpose_a and adjoint_a, or transpose_b and adjoint_b are both set to True.
转载地址:https://blog.csdn.net/qq_30285471/article/details/81265953 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!