---
title: Einsum
description: "Einsum算子使用爱因斯坦求和约定评估Tensor序列上的代数Tensor运算，形式为“term1, term2 -> y_term”。公式字符串包含逗号分隔的小写字母序列。每个项对应于操作数Tensor，项中的字符对应于操作数维度。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/aolapi/atlasoxol_09_0052.html
sourcePath: /source/zh/canncommercial/900/API/aolapi/atlasoxol_09_0052.html
indexId: c5898fdaf8a76af25e92d7148a4e7af0fa1ff3b869fb0744da775099c554cfb763
---
# Einsum

#### 功能

Einsum算子使用爱因斯坦求和约定评估Tensor序列上的代数Tensor运算，形式为“term1, term2 -> y_term”。公式字符串包含逗号分隔的小写字母序列。每个项对应于操作数Tensor，项中的字符对应于操作数维度。


#### 输入

x：输入Tensor，数据类型：float16、float，支持非连续的Tensor，不支持空Tensor，数据格式支持ND，输入Tensor个数为1~2147483647个。


#### 属性

equation：爱因斯坦求和的下标，一个和表达式字符串。


#### 输出：

y：输出Tensor，数据类型：float16、float、int32，支持非连续的Tensor，不支持空Tensor，数据格式支持ND。


#### 约束

目前ONNX的einsum只支持双输入的20种情况：

例如：如"abc,cde->abde"，abc表示第一个张量的维度，其中a、b和c是该Tensor的三个维度；cde表示第二个张量的维度，其中c、d和e是该Tensor的三个维度；abde：表示输出Tensor的维度，我们将在计算过程中得到这个维度。例中Einsum会沿着共享的维度C进行求和。也就是说，c维度在两个Tensor中都会出现，Einsum会对这个维度进行求和操作，而其余维度（a、b、d、e）会保留下来。

"abc,cde->abde","abc,cde->abde","abcd,aecd->aceb","abcd,adbe->acbe","abcd,cde->abe","abc,cd->abd","abc,dc->abd","abc,abd->dc","abc,dec->abde","abc,abde->dec","abcd,aecd->acbe","abcd,acbe->aecd","abcd,ecd->abe","abcd,abe->ecd","abcd,acbe->adbe","abcd,abde->abce","abcd,abce->abde","abcd,aebd->aebc","abcd,abce->acde","abc,abd->acd","ab,cb->ac"。


#### 支持的ONNX版本

支持的ONNX版本Opset v12/v13/v14/v15/v16/v17/v18
