用法
__matmul__(
y
)參數
-
atf.Tensor類型為float16,float32,float64,int32,complex64,complex128且等級 > 1。 -
btf.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.Tensor.__rsub__用法及代碼示例
- Python tf.Tensor.__lt__用法及代碼示例
- Python tf.Tensor.__abs__用法及代碼示例
- Python tf.Tensor.__getitem__用法及代碼示例
- Python tf.Tensor.__ge__用法及代碼示例
- Python tf.Tensor.__rmatmul__用法及代碼示例
- Python tf.Tensor.__bool__用法及代碼示例
- Python tf.Tensor.__xor__用法及代碼示例
- Python tf.Tensor.__sub__用法及代碼示例
- Python tf.Tensor.__rpow__用法及代碼示例
- Python tf.Tensor.__gt__用法及代碼示例
- Python tf.Tensor.__le__用法及代碼示例
- Python tf.Tensor.__pow__用法及代碼示例
- Python tf.Tensor.set_shape用法及代碼示例
- Python tf.Tensor.ref用法及代碼示例
- Python tf.Tensor.get_shape用法及代碼示例
- Python tf.TensorSpec.from_spec用法及代碼示例
- Python tf.Tensor用法及代碼示例
- Python tf.TensorSpec.from_tensor用法及代碼示例
- Python tf.TensorShape.merge_with用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.Tensor.__matmul__。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
