图模式语法-运算符

查看源文件

算术运算符和赋值运算符支持Number和Tensor运算,也支持不同dtype的Tensor运算。

单目算术运算符

单目算术运算符

支持类型

+

Number、Tensor,取正值。

-

Number、Tensor、COOTensor、CSRTensor,取负值。

~

Tensor,且其数据类型为bool。成员逐个取反。

说明:

  • 在Python中~操作符对输入的整数按位取反。MindSpore对~的功能重新定义为对Tensor(Bool)的逻辑取反。

二元算术运算符

二元算术运算符

支持类型

+

Number + Number、String + String、Number + Tensor、Tensor + Number、Tuple + Tensor、Tensor + Tuple、List + Tensor、Tensor+List、List+List、Tensor + Tensor、Tuple + Tuple、COOTensor + Tensor、Tensor + COOTensor、COOTensor + COOTensor、CSRTensor + CSRTensor。

-

Number - Number、Tensor - Tensor、Number - Tensor、Tensor - Number、Tuple - Tensor、Tensor - Tuple、List - Tensor、Tensor - List、COOTensor - Tensor、Tensor - COOTensor、COOTensor - COOTensor、CSRTensor - CSRTensor。

*

Number * Number、Tensor * Tensor、Number * Tensor、Tensor * Number、List * Number、Number * List、Tuple * Number、Number * Tuple、Tuple * Tensor、Tensor * Tuple、 List * Tensor、Tensor * List、COOTensor * Tensor、Tensor * COOTensor、CSRTensor * Tensor、Tensor * CSRTensor。

/

Number / Number、Tensor / Tensor、Number / Tensor、Tensor / Number、Tuple / Tensor、Tensor / Tuple、List / Tensor、Tensor / List、COOTensor / Tensor、CSRTensor / Tensor。

%

Number % Number、Tensor % Tensor、Number % Tensor、Tensor % Number、Tuple % Tensor、Tensor % Tuple、List % Tensor、Tensor % List。

**

Number ** Number、Tensor ** Tensor、Number ** Tensor、Tensor ** Number、Tuple ** Tensor、Tensor ** Tuple、 List ** Tensor、Tensor ** List。

//

Number // Number、Tensor // Tensor、Number // Tensor、Tensor // Number、Tuple // Tensor、Tensor // Tuple、List // Tensor、Tensor // List。

&

Number & Number、Tensor & Tensor、Number & Tensor、Tensor & Number。

∣

Number | Number、Tensor | Tensor、Number | Tensor、Tensor | Number。

^

Number ^ Number、Tensor ^ Tensor、Number ^ Tensor、Tensor ^ Number。

<<

Number << Number。

>>

Number >> Number。

@

Tensor @ Tensor。

限制:

  • 当左右操作数都为Number类型时,不支持float64和int32间的运算。+、-、*、/、%、**、//支持左右操作数的值同时为bool。

  • 当任一操作数为Tensor类型时,左右操作数的值不可同时为bool。

  • List/Tuple和Number进行*运算时表示将List/Tuple复制Number份后串联起来。List内的数据类型可以是图模式下支持的任意数据类型,也支持多层嵌套。Tuple内的数据类型必须为Number、String、None,也支持多层嵌套。

赋值运算符

赋值运算符

支持类型

=

MindSpore支持的Python内置数据类型和MindSpore自定义数据类型

+=

Number += Number、String += String、Number += Tensor、Tensor += Number、Tuple += Tensor、Tensor += Tuple、List += Tensor、Tensor += List、List += List、Tensor += Tensor、Tuple += Tuple。

-=

Number -= Number、Tensor -= Tensor、Number -= Tensor、Tensor -= Number、Tuple -= Tensor、Tensor -= Tuple、List -= Tensor、Tensor -= List。

*=

Number *= Number、Tensor *= Tensor、Number *= Tensor、Tensor *= Number、List *= Number、Number *= List、Tuple *= Number、Number *= Tuple、Tuple *= Tensor、Tensor *= Tuple、 List *= Tensor、Tensor *= List。

/=

Number /= Number、Tensor /= Tensor、Number /= Tensor、Tensor /= Number、Tuple /= Tensor、Tensor /= Tuple、List /= Tensor、Tensor /= List。

%=

Number %= Number、Tensor %= Tensor、Number %= Tensor、Tensor %= Number、Tuple %= Tensor、Tensor %= Tuple、List %= Tensor、Tensor %= List。

**=

Number **= Number、Tensor **= Tensor、Number **= Tensor、Tensor **= Number、Tuple **= Tensor、Tensor **= Tuple、 List **= Tensor、Tensor **= List。

//=

Number //= Number、Tensor //= Tensor、Number //= Tensor、Tensor //= Number、Tuple //= Tensor、Tensor //= Tuple、List //= Tensor、Tensor //= List。

&=

Number &= Number、Tensor &= Tensor、Number &= Tensor、Tensor &= Number。

∣=

Number |= Number、Tensor |= Tensor、Number |= Tensor、Tensor |= Number。

^=

Number ^= Number、Tensor ^= Tensor、Number ^= Tensor、Tensor ^= Number。

<<=

Number <<= Number。

>>=

Number >>= Number。

@=

Tensor @= Tensor。

限制:

  • 当AugAssign的左右操作数都为Number类型时,Number的值不可为bool类型。

  • 当AugAssign的左右操作数都为Number类型时,不支持float64和int32间的运算。

  • 当AugAssign的任一操作数为Tensor类型时,左右操作数的值不可同时为bool。

  • List/Tuple和Number进行*=运算时表示将List/Tuple复制Number份后串联起来。List/Tuple内对象的元素可以包含任意图模式支持的类型,也支持多层嵌套。

逻辑运算符

逻辑运算符

支持类型

and

String、Number、Tuple、List、Dict、None、标量、Tensor。

or

String、Number、Tuple、List、Dict、None、标量、Tensor。

not

Number、Tuple、List、只有一个成员的Tensor。

限制:

  • and、or的左操作数必须要能被转换成布尔值。例如:左操作数不能为存在多个元素的Tensor。当and、or的左操作数是变量Tensor时,右操作数必须也是同类型Tensor且Tensor成员个数只能有一个。在其余情况下,右操作数无要求。

比较运算符

比较运算符

支持类型

in

Number in Tuple、String in Tuple、Tensor in Tuple、Number in List、String in List、Tensor in List、String in Dictionary、Number in Dictionary、常量Tensor in Dictionary、Tuple in Dictionary。

not in

与in相同。

is

仅支持判断是None、True或者False。

is not

仅支持判断不是None、True或者False。

<

Number < Number、Number < Tensor、Tensor < Tensor、Tensor < Number。

<=

Number <= Number、Number <= Tensor、Tensor <= Tensor、Tensor <= Number。

>

Number > Number、Number > Tensor、Tensor > Tensor、Tensor > Number。

>=

Number >= Number、Number >= Tensor、Tensor >= Tensor、Tensor >= Number。

!=

Number != Number、Number != Tensor、Tensor != Tensor、Tensor != Number、mstype != mstype、String != String、Tuple != Tuple、List != List。

==

Number == Number、Number == Tensor、Tensor == Tensor、Tensor == Number、mstype == mstype、String == String、Tuple == Tuple、List == List。

限制:

  • 对于<、<=、>、>=、!=来说,当左右操作数都为Number类型时,Number的值不可为bool类型。

  • 对于<、<=、>、>=、!=、==来说,当左右操作数都为Number类型时,不支持float64和int32间的运算。

  • 对于<、<=、>、>=、!=、==来说,当左右任一操作数为Tensor类型时,左右操作数的值不可同时为bool。

  • 对于==来说,当左右操作数都为Number类型时,支持左右操作数同时为bool,不支持只有一个操作数为bool。

  • 对于!=、==来说除mstype外,其他取值均可和None进行比较来判空。