用法
__matmul__(
y
)
參數
-
a
tf.Tensor
類型為float16
,float32
,float64
,int32
,complex64
,complex128
且等級 > 1。 -
b
tf.Tensor
與a
具有相同的類型和等級。 -
transpose_a
如果True
,a
在乘法之前被轉置。 -
transpose_b
如果True
,b
在乘法之前被轉置。 -
adjoint_a
如果True
,a
在乘法之前被共軛和轉置。 -
adjoint_b
如果True
,b
在乘法之前被共軛和轉置。 -
a_is_sparse
如果True
,a
被視為稀疏矩陣。注意,這不支持tf.sparse.SparseTensor
, 它隻是進行假設大多數值的優化a
為零。看tf.sparse.sparse_dense_matmul一些支持tf.sparse.SparseTensor乘法。 -
b_is_sparse
如果True
,b
被視為稀疏矩陣。注意,這不支持tf.sparse.SparseTensor
, 它隻是進行假設大多數值的優化a
為零。看tf.sparse.sparse_dense_matmul一些支持tf.sparse.SparseTensor乘法。 -
output_type
如果需要,輸出數據類型。默認為 None 在這種情況下 output_type 與輸入類型相同。目前僅在輸入張量為 (u)int8 類型且 output_type 可以為 int32 時有效。 -
name
操作的名稱(可選)。
返回
-
A tf.Tensor同類型的
a
和b
其中每個inner-most矩陣是對應矩陣的乘積a
和b
,例如如果所有轉置或伴隨屬性都是False
:output[..., i, j] = sum_k (a[..., i, k] * b[..., k, j])
,對於所有索引i
,j
。 -
Note
這是矩陣產品,而不是元素產品。
拋出
-
ValueError
如果transpose_a
和adjoint_a
,或transpose_b
和adjoint_b
都設置為True
。 -
TypeError
如果指定了output_type,但a
,b
和output_type
的類型不是(u)int8、(u)int8和int32。
將矩陣 a
乘以矩陣 b
,產生 a
* b
。
在任何轉置之後,輸入必須是秩 >= 2 的張量,其中內部 2 維指定有效的矩陣乘法維度,任何進一步的外部維度指定匹配的批量大小。
兩個矩陣必須屬於同一類型。支持的類型是:bfloat16
, float16
, float32
, float64
, int32
, int64
, complex64
, complex128
。
通過將相應標誌之一設置為 True
,可以即時轉置或連接(共軛和轉置)矩陣。默認情況下,這些是False
。
如果一個或兩個矩陣包含很多零,則可以通過將相應的 a_is_sparse
或 b_is_sparse
標誌設置為 True
來使用更有效的乘法算法。默認情況下,這些是False
。此優化僅適用於數據類型為 bfloat16
或 float32
的普通矩陣(rank-2 張量)。
一個簡單的二維張量矩陣乘法:
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])
a # 2-D tensor
<tf.Tensor:shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
[4, 5, 6]], dtype=int32)>
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])
b # 2-D tensor
<tf.Tensor:shape=(3, 2), dtype=int32, numpy=
array([[ 7, 8],
[ 9, 10],
[11, 12]], dtype=int32)>
c = tf.matmul(a, b)
c # `a` * `b`
<tf.Tensor:shape=(2, 2), dtype=int32, numpy=
array([[ 58, 64],
[139, 154]], dtype=int32)>
具有批次形狀的批次矩陣乘法 [2]:
a = tf.constant(np.arange(1, 13, dtype=np.int32), shape=[2, 2, 3])
a # 3-D tensor
<tf.Tensor:shape=(2, 2, 3), dtype=int32, numpy=
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]], dtype=int32)>
b = tf.constant(np.arange(13, 25, dtype=np.int32), shape=[2, 3, 2])
b # 3-D tensor
<tf.Tensor:shape=(2, 3, 2), dtype=int32, numpy=
array([[[13, 14],
[15, 16],
[17, 18]],
[[19, 20],
[21, 22],
[23, 24]]], dtype=int32)>
c = tf.matmul(a, b)
c # `a` * `b`
<tf.Tensor:shape=(2, 2, 2), dtype=int32, numpy=
array([[[ 94, 100],
[229, 244]],
[[508, 532],
[697, 730]]], dtype=int32)>
由於 python >= 3.5,支持 @ 運算符(參見 PEP 465)。在 TensorFlow 中,它隻是調用 tf.matmul() 函數,因此以下幾行是等價的:
d = a @ b @ [[10], [11]]
d = tf.matmul(tf.matmul(a, b), [[10], [11]])
相關用法
- Python tf.compat.v1.Variable.__getitem__用法及代碼示例
- Python tf.compat.v1.Variable.__rmatmul__用法及代碼示例
- Python tf.compat.v1.Variable.__ge__用法及代碼示例
- Python tf.compat.v1.Variable.__pow__用法及代碼示例
- Python tf.compat.v1.Variable.__le__用法及代碼示例
- Python tf.compat.v1.Variable.__rpow__用法及代碼示例
- Python tf.compat.v1.Variable.__gt__用法及代碼示例
- Python tf.compat.v1.Variable.__sub__用法及代碼示例
- Python tf.compat.v1.Variable.__abs__用法及代碼示例
- Python tf.compat.v1.Variable.__lt__用法及代碼示例
- Python tf.compat.v1.Variable.__rsub__用法及代碼示例
- Python tf.compat.v1.Variable.eval用法及代碼示例
- Python tf.compat.v1.Variable.initialized_value用法及代碼示例
- Python tf.compat.v1.Variable.scatter_nd_update用法及代碼示例
- Python tf.compat.v1.Variable.load用法及代碼示例
- Python tf.compat.v1.Variable.scatter_nd_add用法及代碼示例
- Python tf.compat.v1.Variable.scatter_nd_sub用法及代碼示例
- Python tf.compat.v1.Variable.ref用法及代碼示例
- Python tf.compat.v1.Variable用法及代碼示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.Variable.__matmul__。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。