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.Add mindspore.ops.ApplyAdadelta mindspore.ops.ApplyAdagrad
mindspore.ops.ApplyAdagradV2 mindspore.ops.ApplyAdaMax mindspore.ops.ApplyAddSign
mindspore.ops.ApplyGradientDescent mindspore.ops.ApplyMomentum mindspore.ops.ApplyPowerSign
mindspore.ops.ApplyProximalAdagrad mindspore.ops.ApplyProximalGradientDescent mindspore.ops.ApproximateEqual
mindspore.ops.Assign mindspore.ops.AssignAdd mindspore.ops.AssignSub
mindspore.ops.Atan2 mindspore.ops.BitwiseAnd mindspore.ops.BitwiseOr
mindspore.ops.BitwiseXor mindspore.ops.Div mindspore.ops.DivNoNan
mindspore.ops.Equal mindspore.ops.FloorDiv mindspore.ops.FloorMod
mindspore.ops.FusedSparseAdam mindspore.ops.FusedSparseFtrl mindspore.ops.FusedSparseLazyAdam
mindspore.ops.FusedSparseProximalAdagrad mindspore.ops.Greater mindspore.ops.GreaterEqual
mindspore.ops.Less mindspore.ops.LessEqual mindspore.ops.LogicalAnd
mindspore.ops.LogicalOr mindspore.ops.Maximum mindspore.ops.Minimum
mindspore.ops.Mod mindspore.ops.Mul mindspore.ops.NotEqual
mindspore.ops.Pow mindspore.ops.RealDiv mindspore.ops.ScatterAdd
mindspore.ops.ScatterDiv mindspore.ops.ScatterMax mindspore.ops.ScatterMin
mindspore.ops.ScatterMul mindspore.ops.ScatterNdAdd mindspore.ops.ScatterNdSub
mindspore.ops.ScatterNdUpdate mindspore.ops.ScatterNonAliasingAdd mindspore.ops.ScatterSub
mindspore.ops.ScatterUpdate mindspore.ops.SparseApplyAdagrad mindspore.ops.SparseApplyAdagradV2
mindspore.ops.SparseApplyFtrl mindspore.ops.SparseApplyFtrlV2 mindspore.ops.SparseApplyProximalAdagrad
mindspore.ops.SquaredDifference mindspore.ops.Sub mindspore.ops.TruncateDiv
mindspore.ops.TruncateMod mindspore.ops.Xdivy mindspore.ops.Xlogy