scalar_conv

功能说明

标量精度转换(值转换)。支持如下几种数据类型的转换:

函数原型

scalar_conv(round_mode, dst, src)

参数说明

表1 参数说明

参数名称

输入/输出

含义

dst

输出

目的操作数,支持的数据类型为:Scalar(float32, float16, int32)

round_mode

输入

转换模式支持情况如下:

  • '' 或 'none':无需取整
  • 'round':针对x.5而言转换成最邻近的偶数,其他情况四舍六入
  • 'floor':向下取整
  • 'ceil' 或 'ceiling':向上取整
  • 'away-zero':

    Atlas 训练系列产品,表示反向0取整,远离零,对正数 x.x 变成(x+1),对负数 -x.x,变成 -(x+1)。

  • 'to-zero':向0取整
  • 'odd':最近邻奇数取整

该接口支持的精度转换及每一种转换对应的round_mode如表2所示。

src

输入

源操作数。

支持的数据类型为:Scalar(float32, float16, int32)

表2 round_mode

源操作数数据类型

目的操作数数据类型

支持转换处理模式

float32

int32

'round', 'away-zero', 'to-zero', 'floor', 'ceil', 'ceiling'

int32

float32

'', 'none'

float16

float32

'', 'none'

float32

float16

'', 'none', 'odd'

支持的芯片型号

Atlas 训练系列产品

注意事项

在转换过程中,可能导致精度损失。

表3 Round模式举例(Atlas 训练系列产品

round

floor

ceil/ceiling

away-zero

to-zero

odd

1.8

2

1

2

2

1

2

1.5

2

1

2

2

1

1

1.2

1

1

2

2

1

1

0.8

1

0

1

1

0

1

0.5

0

0

1

1

0

1

0.2

0

0

1

1

0

0

-0.2

0

-1

0

-1

0

0

-0.5

0

-1

0

-1

0

-1

-0.8

-1

-1

0

-1

0

-1

-1.2

-1

-2

-1

-2

-1

-1

-1.5

-2

-2

-1

-2

-1

-1

-1.8

-2

-2

-1

-2

-1

2

返回值

调用示例

from tbe import tik
tik_instance = tik.Tik()
src_scalar = tik_instance.Scalar(dtype="float32", init_value=10.2)
dst_scalar = tik_instance.Scalar(dtype="int32")
tik_instance.scalar_conv('round', dst_scalar, src_scalar)