Gemm - 7 vs 9#
Next section compares an older to a newer version of the same operator after both definition are converted into markdown text. Green means an addition to the newer version, red means a deletion. Anything else is unchanged.
- Gemm7 → Gemm9 +2 -6
Gemm7 → Gemm9
RENAMED
@@ -1 +1 @@
|
|
1
1
|
General Matrix multiplication:
|
2
2
|
https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3
|
3
3
|
A' = transpose(A) if transA else A
|
4
4
|
B' = transpose(B) if transB else B
|
5
5
|
Compute Y = alpha * A' * B' + beta * C, where input tensor A has shape (M, K) or (K, M),
|
6
6
|
input tensor B has shape (K, N) or (N, K), input tensor C is broadcastable to shape (M, N),
|
7
7
|
and output tensor Y has shape (M, N). A will be transposed before doing the
|
8
8
|
computation if attribute transA is non-zero, same for B and transB.
|
9
9
|
This operator supports **unidirectional broadcasting** (tensor C should be unidirectional broadcastable to tensor A * B); for more details please check Broadcasting in ONNX <https://github.com/onnx/onnx/blob/master/docs/Broadcasting.md>_.
|
10
10
|
**Attributes**
|
11
11
|
* **alpha**:
|
12
12
|
Scalar multiplier for the product of input tensors A * B.
|
13
13
|
* **beta**:
|
14
14
|
Scalar multiplier for input tensor C.
|
15
15
|
* **transA**:
|
16
16
|
Whether A should be transposed
|
17
17
|
* **transB**:
|
18
18
|
Whether B should be transposed
|
19
19
|
**Inputs**
|
20
20
|
* **A** (heterogeneous) - **T**:
|
21
21
|
Input tensor A. The shape of A should be (M, K) if transA is 0, or
|
22
22
|
(K, M) if transA is non-zero.
|
23
23
|
* **B** (heterogeneous) - **T**:
|
24
24
|
Input tensor B. The shape of B should be (K, N) if transB is 0, or
|
25
25
|
(N, K) if transB is non-zero.
|
26
26
|
* **C** (heterogeneous) - **T**:
|
27
27
|
Input tensor C. The shape of C should be unidirectional
|
28
28
|
broadcastable to (M, N).
|
29
29
|
**Outputs**
|
30
30
|
* **Y** (heterogeneous) - **T**:
|
31
31
|
Output tensor of shape (M, N).
|
32
32
|
**Type Constraints**
|
33
33
|
* **T** in (
|
34
34
|
tensor(double),
|
35
35
|
tensor(float),
|
36
|
-
tensor(float16)
|
36
|
+
tensor(float16)
|
37
|
-
tensor(int32),
|
38
|
-
tensor(int64),
|
39
|
-
tensor(uint32),
|
40
|
-
tensor(uint64)
|
41
37
|
):
|
42
|
-
Constrain input and output types to float
|
38
|
+
Constrain input and output types to float tensors.
|