静态图语法——运算符
算术运算符和赋值运算符支持Number
和Tensor
运算,也支持不同dtype
的Tensor
运算。
单目算术运算符
单目算术运算符 |
支持类型 |
---|---|
|
|
|
|
|
|
说明:
在Python中
~
操作符对输入的整数按位取反; MindSpore对~
的功能重新定义为对Tensor(Bool)
的逻辑取反。
二元算术运算符
二元算术运算符 |
支持类型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
限制:
当左右操作数都为
Number
类型时,不支持Float64
和Int32
间的运算。+
、-
、*
、/
、%
、**
、//
支持左右操作数的值同时为Bool
。当任一操作数为
Tensor
类型时,左右操作数的值不可同时为Bool
。List/Tuple
和Number
进行*
运算时表示将List/Tuple
复制Number
份后串联起来,List
内的数据类型可以是图模式下支持的任意数据类型,也支持多层嵌套。Tuple
内的数据类型必须为Number
、String
、None
,也支持多层嵌套。
赋值运算符
赋值运算符 |
支持类型 |
---|---|
|
MindSpore支持的Python内置数据类型和MindSpore自定义数据类型 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
限制:
当
AugAssign
的左右操作数都为Number
类型时,Number
的值不可为Bool
类型。当
AugAssign
的左右操作数都为Number
类型时,不支持Float64
和Int32
间的运算。当
AugAssign
的任一操作数为Tensor
类型时,左右操作数的值不可同时为Bool
。List/Tuple
和Number
进行*=
运算时表示将List/Tuple
复制Number
份后串联起来,List/Tuple
内对象的元素可以包含任意图模式支持的类型,也支持多层嵌套。
逻辑运算符
逻辑运算符 |
支持类型 |
---|---|
|
|
|
|
|
|
限制:
and
、or
的左操作数必须要能被转换成布尔值。例如:左操作数不能为存在多个元素的Tensor。当and
、or
的左操作数是变量Tensor时,右操作数必须也是同类型Tensor且Tensor成员个数只能有一个。在其余情况下,右操作数无要求。
比较运算符
比较运算符 |
支持类型 |
---|---|
|
|
|
与 |
|
仅支持判断是 |
|
仅支持判断不是 |
< |
|
<= |
|
> |
|
>= |
|
!= |
|
== |
|
限制:
对于
<
、<=
、>
、>=
、!=
来说,当左右操作数都为Number
类型时,Number
的值不可为Bool
类型。对于
<
、<=
、>
、>=
、!=
、==
来说,当左右操作数都为Number
类型时,不支持Float64
和Int32
间的运算。对于
<
、<=
、>
、>=
、!=
、==
来说,当左右任一操作数为Tensor
类型时,左右操作数的值不可同时为Bool
。对于
==
来说,当左右操作数都为Number
类型时,支持左右操作数同时为Bool
,不支持只有一个操作数为Bool
。对于
!=
、==
来说除mstype
外,其他取值均可和None
进行比较来判空。不支持链式比较,如:
a>b>c
。