Gemm

Gemm - 13

版本

  • 名称: Gemm (GitHub)

  • : main

  • 自版本: 13

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符已自版本 13 起可用。

摘要

一般矩阵乘法: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3

  • A’ = transpose(A) if transA else A

  • B’ = transpose(B) if transB else B

计算 Y = alpha * A’ * B’ + beta * C,其中输入张量 A 的形状为 (M, K) 或 (K, M),输入张量 B 的形状为 (K, N) 或 (N, K),输入张量 C 可以广播到形状 (M, N),输出张量 Y 的形状为 (M, N)。如果属性 transA 不为零,则 A 会在计算之前进行转置,B 和 transB 也是如此。此运算符支持单向广播(张量 C 应该可以单向广播到张量 A * B);有关更多详细信息,请查看 ONNX 中的广播。此运算符具有可选输入/输出。有关可选参数表示的更多详细信息,请参阅 ONNX IR。空字符串可以用来代替实际参数的名称,以指示缺少参数。尾随可选参数(后面没有跟随任何存在的参数)也可以简单地省略。

属性

  • alpha - FLOAT(默认值为 '1.0'

    输入张量 A * B 的乘积的标量乘数。

  • beta - FLOAT(默认值为 '1.0'

    输入张量 C 的标量乘数。

  • transA - INT(默认值为 '0'

    是否应该转置 A

  • transB - INT(默认值为 '0'

    是否应该转置 B

输入

2 到 3 个输入。

  • A(异构) - T

    输入张量 A。如果 transA 为 0,则 A 的形状应为 (M, K),如果 transA 不为零,则应为 (K, M)。

  • B(异构) - T

    输入张量 B。如果 transB 为 0,则 B 的形状应为 (K, N),如果 transB 不为零,则应为 (N, K)。

  • C(可选,异构) - T

    可选输入张量 C。如果未指定,则计算将被视为 C 是标量 0。C 的形状应可单向广播到 (M, N)。

输出

  • Y(异构) - T

    形状为 (M, N) 的输出张量。

类型约束

  • T in ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(uint32), tensor(uint64) )

    将输入和输出类型限制为浮点数/整数张量。

Gemm - 11

版本

  • 名称: Gemm (GitHub)

  • : main

  • 自版本: 11

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符已自版本 11 起可用。

摘要

一般矩阵乘法: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3

A’ = transpose(A) if transA else A

B’ = transpose(B) if transB else B

计算 Y = alpha * A’ * B’ + beta * C,其中输入张量 A 的形状为 (M, K) 或 (K, M),输入张量 B 的形状为 (K, N) 或 (N, K),输入张量 C 可以广播到形状 (M, N),输出张量 Y 的形状为 (M, N)。如果属性 transA 不为零,则 A 会在计算之前进行转置,B 和 transB 也是如此。此运算符支持单向广播(张量 C 应该可以单向广播到张量 A * B);有关更多详细信息,请查看 ONNX 中的广播。此运算符具有可选输入/输出。有关可选参数表示的更多详细信息,请参阅 ONNX IR。空字符串可以用来代替实际参数的名称,以指示缺少参数。尾随可选参数(后面没有跟随任何存在的参数)也可以简单地省略。

属性

  • alpha - FLOAT(默认值为 '1.0'

    输入张量 A * B 的乘积的标量乘数。

  • beta - FLOAT(默认值为 '1.0'

    输入张量 C 的标量乘数。

  • transA - INT(默认值为 '0'

    是否应该转置 A

  • transB - INT(默认值为 '0'

    是否应该转置 B

输入

2 到 3 个输入。

  • A(异构) - T

    输入张量 A。如果 transA 为 0,则 A 的形状应为 (M, K),如果 transA 不为零,则应为 (K, M)。

  • B(异构) - T

    输入张量 B。如果 transB 为 0,则 B 的形状应为 (K, N),如果 transB 不为零,则应为 (N, K)。

  • C(可选,异构) - T

    可选输入张量 C。如果未指定,则计算将被视为 C 是标量 0。C 的形状应可单向广播到 (M, N)。

输出

  • Y(异构) - T

    形状为 (M, N) 的输出张量。

类型约束

  • T in ( tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(uint32), tensor(uint64) )

    将输入和输出类型限制为浮点数/整数张量。

Gemm - 9

版本

  • 名称: Gemm (GitHub)

  • : main

  • 自版本: 9

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符已自版本 9 起可用。

摘要

一般矩阵乘法: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3

A’ = transpose(A) if transA else A

B’ = transpose(B) if transB else B

计算 Y = alpha * A’ * B’ + beta * C,其中输入张量 A 的形状为 (M, K) 或 (K, M),输入张量 B 的形状为 (K, N) 或 (N, K),输入张量 C 可以广播到形状 (M, N),输出张量 Y 的形状为 (M, N)。如果属性 transA 不为零,则 A 会在计算之前进行转置,B 和 transB 也是如此。此运算符支持单向广播(张量 C 应该可以单向广播到张量 A * B);有关更多详细信息,请查看 ONNX 中的广播

属性

  • alpha - FLOAT(默认值为 '1.0'

    输入张量 A * B 的乘积的标量乘数。

  • beta - FLOAT(默认值为 '1.0'

    输入张量 C 的标量乘数。

  • transA - INT(默认值为 '0'

    是否应该转置 A

  • transB - INT(默认值为 '0'

    是否应该转置 B

输入

  • A(异构) - T

    输入张量 A。如果 transA 为 0,则 A 的形状应为 (M, K),如果 transA 不为零,则应为 (K, M)。

  • B(异构) - T

    输入张量 B。如果 transB 为 0,则 B 的形状应为 (K, N),如果 transB 不为零,则应为 (N, K)。

  • C(异构) - T

    输入张量 C。C 的形状应可单向广播到 (M, N)。

输出

  • Y(异构) - T

    形状为 (M, N) 的输出张量。

类型约束

  • T in ( tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(uint32), tensor(uint64) )

    将输入和输出类型限制为浮点数/整数张量。

Gemm - 7

版本

  • 名称: Gemm (GitHub)

  • : main

  • 自版本: 7

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符已自版本 7 起可用。

摘要

一般矩阵乘法: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3

A’ = transpose(A) if transA else A

B’ = transpose(B) if transB else B

计算 Y = alpha * A’ * B’ + beta * C,其中输入张量 A 的形状为 (M, K) 或 (K, M),输入张量 B 的形状为 (K, N) 或 (N, K),输入张量 C 可以广播到形状 (M, N),输出张量 Y 的形状为 (M, N)。如果属性 transA 不为零,则 A 会在计算之前进行转置,B 和 transB 也是如此。此运算符支持单向广播(张量 C 应该可以单向广播到张量 A * B);有关更多详细信息,请查看 ONNX 中的广播

属性

  • alpha - FLOAT(默认值为 '1.0'

    输入张量 A * B 的乘积的标量乘数。

  • beta - FLOAT(默认值为 '1.0'

    输入张量 C 的标量乘数。

  • transA - INT(默认值为 '0'

    是否应该转置 A

  • transB - INT(默认值为 '0'

    是否应该转置 B

输入

  • A(异构) - T

    输入张量 A。如果 transA 为 0,则 A 的形状应为 (M, K),如果 transA 不为零,则应为 (K, M)。

  • B(异构) - T

    输入张量 B。如果 transB 为 0,则 B 的形状应为 (K, N),如果 transB 不为零,则应为 (N, K)。

  • C(异构) - T

    输入张量 C。C 的形状应可单向广播到 (M, N)。

输出

  • Y(异构) - T

    形状为 (M, N) 的输出张量。

类型约束

  • T in ( tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型限制为浮点数张量。

Gemm - 6

版本

  • 名称: Gemm (GitHub)

  • : main

  • 自版本: 6

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符已自版本 6 起可用。

摘要

一般矩阵乘法: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3 计算 Y = alpha * A * B + beta * C,其中输入张量 A 的维度为 (M X K),输入张量 B 的维度为 (K X N),输入张量 C 和输出张量 Y 的维度为 (M X N)。如果属性 broadcast 不为零,则输入张量 C 将被广播以匹配维度要求。如果属性 transA 不为零,则 A 会在计算之前进行转置,B 和 transB 也是如此。

属性

  • alpha - FLOAT(默认值为 '1.0'

    输入张量 A * B 的乘积的标量乘数,默认值为 1.0。

  • beta - FLOAT(默认值为 '1.0'

    输入张量 C 的标量乘数,默认值为 1.0。

  • broadcast - INT(默认值为 '0'

    是否应该广播 C

  • transA - INT(默认值为 '0'

    是否应该转置 A

  • transB - INT(默认值为 '0'

    是否应该转置 B

输入

  • A(异构) - T

    输入张量 A

  • B(异构) - T

    输入张量 B

  • C(异构) - T

    输入张量 C

输出

  • Y(异构) - T

    输出张量。

类型约束

  • T in ( tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型限制为浮点数张量。

Gemm - 1

版本

  • 名称: Gemm (GitHub)

  • : main

  • 自版本: 1

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: False

此版本的运算符已自版本 1 起可用。

摘要

一般矩阵乘法: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3 计算 Y = alpha * A * B + beta * C,其中输入张量 A 的维度为 (M X K),输入张量 B 的维度为 (K X N),输入张量 C 和输出张量 Y 的维度为 (M X N)。如果属性 broadcast 不为零,则输入张量 C 将被广播以匹配维度要求。如果属性 transA 不为零,则 A 会在计算之前进行转置,B 和 transB 也是如此。

属性

  • alpha - FLOAT(默认值为 '1.0'

    输入张量 A * B 的乘积的标量乘数,默认值为 1.0。

  • beta - FLOAT(默认值为 '1.0'

    输入张量 C 的标量乘数,默认值为 1.0。

  • broadcast - INT(默认值为 '0'

    是否应该广播 C

  • transA - INT(默认值为 '0'

    是否应该转置 A

  • transB - INT(默认值为 '0'

    是否应该转置 B

输入

  • A(异构) - T

    输入张量 A

  • B(异构) - T

    输入张量 B

  • C(异构) - T

    输入张量 C,可以是就地操作。

输出

  • Y(异构) - T

    输出张量。

类型约束

  • T in ( tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型限制为浮点数张量。