MindSpore隐式类型转换的算子支持

Linux Ascend GPU CPU 模型开发 初级 中级 高级

查看源文件

隐式类型转换

转换规则

  • 标量与Tensor运算:运算时,将标量自动转为Tensor,数据类型和参与运算的Tensor数据类型保持一致;当Tensor是bool数据类型,标量是int或float时,将标量和Tensor都转为数据类型为int32或float32的Tensor;当Tensor是int或者uint数据类型,标量是float时,将标量和Tensor都转为数据类型为float32的Tensor。

  • 不同数据类型Tensor运算:数据类型优先级排序为bool < uint8 < int8 < int16 < int32 < int64 < float16 < float32 < float64,运算时,先确定参与运算的Tensor中优先级相对最高的数据类型,然后将低优先级数据类型Tensor转换为相对最高优先级数据类型;而当int8和uint8数据类型的Tensor进行运算时,将其都转为int16的Tensor。

  • 不支持对Parameter进行数据类型转换:如果按照转换规则推导,需要对网络中定义的Parameter进行数据类型转换时,会抛出RuntimeError异常。

参与转换的数据类型

  • bool

  • int8

  • uint8

  • int16

  • int32

  • int64

  • float16

  • float32

  • float64

支持算子

算子名

mindspore.ops.Assign

mindspore.ops.AssignSub

mindspore.ops.ApplyMomentum

mindspore.ops.FusedSparseAdam

mindspore.ops.FusedSparseLazyAdam

mindspore.ops.FusedSparseFtrl

mindspore.ops.FusedSparseProximalAdagrad

mindspore.ops.ApplyAdaMax

mindspore.ops.ApplyAdadelta

mindspore.ops.ApplyAdagrad

mindspore.ops.ApplyAdagradV2

mindspore.ops.SparseApplyAdagrad

mindspore.ops.SparseApplyAdagradV2

mindspore.ops.ApplyProximalAdagrad

mindspore.ops.SparseApplyProximalAdagrad

mindspore.ops.ApplyAddSign

mindspore.ops.ApplyPowerSign

mindspore.ops.ApplyGradientDescent

mindspore.ops.ApplyProximalGradientDescent

mindspore.ops.SparseApplyFtrl

mindspore.ops.SparseApplyFtrlV2

mindspore.ops.BitwiseAnd

mindspore.ops.BitwiseOr

mindspore.ops.BitwiseXor

mindspore.ops.TensorAdd

mindspore.ops.Add

mindspore.ops.Sub

mindspore.ops.Mul

mindspore.ops.Pow

mindspore.ops.Minimum

mindspore.ops.Maximum

mindspore.ops.RealDiv

mindspore.ops.Div

mindspore.ops.DivNoNan

mindspore.ops.FloorDiv

mindspore.ops.TruncateDiv

mindspore.ops.TruncateMod

mindspore.ops.Mod

mindspore.ops.FloorMod

mindspore.ops.Atan2

mindspore.ops.SquaredDifference

mindspore.ops.Xdivy

mindspore.ops.Xlogy

mindspore.ops.Equal

mindspore.ops.ApproximateEqual

mindspore.ops.NotEqual

mindspore.ops.Greater

mindspore.ops.GreaterEqual

mindspore.ops.Less

mindspore.ops.LessEqual

mindspore.ops.LogicalAnd

mindspore.ops.LogicalOr

mindspore.ops.ScatterNdUpdate

mindspore.ops.ScatterNdAdd

mindspore.ops.ScatterNdSub

mindspore.ops.ScatterNonAliasingAdd

mindspore.ops.ScatterUpdate

mindspore.ops.ScatterMax

mindspore.ops.ScatterMin

mindspore.ops.ScatterAdd

mindspore.ops.ScatterSub

mindspore.ops.ScatterMul

mindspore.ops.ScatterDiv

mindspore.ops.AssignAdd