Einsum

Einsum - 12

版本

  • 名称: Einsum (GitHub)

  • 域名: main

  • since_version: 12

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

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

摘要

一个形式为 term1, term2 -> output-term 的 einsum 使用以下方程生成输出张量

output[output-term] = reduce-sum( input1[term1] * input2[term2] )

其中 reduce-sum 对输入项(term1, term2)中所有未出现在输出项中的索引执行求和操作。

Einsum运算符使用爱因斯坦求和约定评估一系列张量的代数张量操作。方程字符串包含一系列由逗号分隔的小写字母。每个项对应一个操作数张量,项中的字符对应操作数的维度。

这个序列后面可能跟着“->”来分隔方程的左右两边。 如果方程包含“->”后跟右边,则执行爱因斯坦求和的显式(非经典)形式,右边的索引表示输出张量的维度。在其他情况下, 输出索引(隐式地)设置为在方程中恰好出现一次的索引的字母顺序排列。

当维度字符在左侧重复时,它表示沿该维度的求和。

方程可能包含省略号(“…”)以启用广播。省略号必须表示固定数量的维度。 具体来说,方程中每次出现的省略号必须代表相同数量的维度。 右侧可能恰好包含一个省略号。在隐式模式下,省略号维度设置为输出的开头。方程字符串可能包含空格(U+0020)字符。

属性

  • equation - STRING (必填) :

    Einsum表达式字符串。

输入

介于1到2147483647之间的输入。

  • 输入 (可变参数,异构) - T:

    操作数

输出

  • 输出 (异构) - T:

    输出张量

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入和输出类型限制为所有数值张量类型。