Cast¶
Cast - 24¶
版本¶
名称: Cast (GitHub)
域:
main
起始版本:
24
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符已可用于版本 24 及以上。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。
支持将纯(例如,“3.14”和“1000”)和科学数字表示(例如,“1e-5”和“1E8”)中的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有一些字符串字面量保留给特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何可以不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。同样,此不区分大小写规则也适用于“INF”和“NaN”。将数值张量转换为字符串张量时,将使用纯浮点表示(例如“314.15926”)。转换非数字字面量字符串(例如“Hello World!”)是未定义行为。将表示浮点算数值的字符串(例如“2.718”)转换为 INT 是未定义行为。
数值类型之间的转换始终允许。用户必须注意由于两种类型之间的范围差异导致的精度损失和值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
更详细地,如果目标类型不是浮点 8 类型,则数值类型之间的转换应遵循以下规则。
从浮点数转换到
浮点数:如果超出范围(OOR),则为 +/- 无穷大。
定点数:如果超出范围,则未定义。
布尔值:+/- 0.0 为 False;所有其他值为 True。
从定点数转换到
浮点数:如果超出范围,则为 +/- 无穷大。(对于无符号整数为 + 无穷大)
定点数:当超出范围时,丢弃高位并重新解释(对于有符号类型,根据二进制补码表示)。例如,200 (int16) -> -56 (int8)。
布尔值:零为 False;非零为 True。
从布尔值转换到
浮点数:
{1.0, 0.0}
。定点数:
{1, 0}
。布尔值:无变化。
引入了浮点 8 类型(E4M3FN、E4M3FNUZ、E5M2、E5M2FNUZ)以加速深度模型的训练。默认情况下,浮点数 *x* 的转换遵循以下规则。[x]
表示四舍五入到目标尾数宽度的值。
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
Inf |
FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
-Inf |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
[x] > FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
[x] < -FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
else |
RNE |
RNE |
RNE |
RNE |
如果参数“saturate”设置为 False,则行为会改变。规则变为
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
-NaN |
-NaN |
NaN |
-NaN |
NaN |
Inf |
NaN |
NaN |
Inf |
NaN |
-Inf |
-NaN |
NaN |
-Inf |
NaN |
[x] > FLT_MAX |
NaN |
NaN |
Inf |
NaN |
[x] < -FLT_MAX |
NaN |
NaN |
-Inf |
NaN |
else |
RNE |
RNE |
RNE |
RNE |
引入 FLOAT8E8M0 类型是为了启用微缩放 (MX) 格式。转换为 FLOAT8E8M0 时,可以使用 round_mode
和 saturate
属性指定舍入行为。当前的 CUDA 行为是向上舍入并饱和。将负值转换为 FLOAT8E8M0 会导致未定义行为。下表描述了在两种最常见情况下,特殊值转换为 FLOAT8E8M0 的行为。
x |
饱和 + 向上 |
非饱和 + 最近 |
---|---|---|
0 |
0 |
NaN |
-0 |
未指定 |
未指定 |
NaN |
NaN |
NaN |
Inf |
E8M0_MAX |
NaN |
x > E8M0_MAX |
E8M0_MAX |
NaN |
x < E8M0_MIN |
E8M0_MIN |
NaN |
x < 0 |
未指定 |
未指定 |
属性¶
round_mode - 字符串 (默认为
'up'
)转换为 float8e8m0 的舍入模式。它仅适用于转换为 float8e8m0,默认值为
up
。up
:四舍五入到远离零的最近值;down
:四舍五入到靠近零的最近值;nearest
:四舍五入到最近值,并向上舍入平局。saturate - 整型 (默认为
'1'
)该参数定义了如果输入值超出目标类型范围,转换的行为方式。它仅适用于浮点 8 转换 (float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz, float8e8m0)。默认情况下为 true。所有情况都在运算符描述中的表格中完整描述。
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float4e2m1)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(float8e8m0)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从复数类型转换。
T2 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float4e2m1)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(float8e8m0)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为复数类型。
Cast - 23¶
版本¶
名称: Cast (GitHub)
域:
main
起始版本:
23
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符已可用于版本 23 及以上。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。
支持将纯(例如,“3.14”和“1000”)和科学数字表示(例如,“1e-5”和“1E8”)中的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有一些字符串字面量保留给特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何可以不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。同样,此不区分大小写规则也适用于“INF”和“NaN”。将数值张量转换为字符串张量时,将使用纯浮点表示(例如“314.15926”)。转换非数字字面量字符串(例如“Hello World!”)是未定义行为。将表示浮点算数值的字符串(例如“2.718”)转换为 INT 是未定义行为。
数值类型之间的转换始终允许。用户必须注意由于两种类型之间的范围差异导致的精度损失和值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
更详细地,如果目标类型不是浮点 8 类型,则数值类型之间的转换应遵循以下规则。
从浮点数转换到
浮点数:如果超出范围(OOR),则为 +/- 无穷大。
定点数:如果超出范围,则未定义。
布尔值:+/- 0.0 为 False;所有其他值为 True。
从定点数转换到
浮点数:如果超出范围,则为 +/- 无穷大。(对于无符号整数为 + 无穷大)
定点数:当超出范围时,丢弃高位并重新解释(对于有符号类型,根据二进制补码表示)。例如,200 (int16) -> -56 (int8)。
布尔值:零为 False;非零为 True。
从布尔值转换到
浮点数:
{1.0, 0.0}
。定点数:
{1, 0}
。布尔值:无变化。
引入了浮点 8 类型以加速深度模型的训练。默认情况下,浮点数 *x* 的转换遵循以下规则。[x]
表示四舍五入到目标尾数宽度的值。
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
Inf |
FLT_MAX |
NaN |
FLT_MAX |
NaN |
-Inf |
-FLT_MAX |
NaN |
-FLT_MAX |
NaN |
[x] > FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
[x] < -FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
else |
RNE |
RNE |
RNE |
RNE |
如果参数“saturate”设置为 False,则行为会改变。规则变为
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
-NaN |
-NaN |
NaN |
-NaN |
NaN |
Inf |
NaN |
NaN |
Inf |
NaN |
-Inf |
-NaN |
NaN |
-Inf |
NaN |
[x] > FLT_MAX |
NaN |
NaN |
Inf |
NaN |
[x] < -FLT_MAX |
NaN |
NaN |
-Inf |
NaN |
else |
RNE |
RNE |
RNE |
RNE |
属性¶
saturate - 整型 (默认为
'1'
)该参数定义了如果输入值超出目标类型范围,转换的行为方式。它仅适用于浮点 8 转换 (float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz)。默认情况下为 true。所有情况都在运算符描述中的两个表格中完整描述。
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float4e2m1)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从复数类型转换。
T2 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float4e2m1)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为复数类型。
Cast - 21¶
版本¶
名称: Cast (GitHub)
域:
main
since_version:
21
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自 版本 21 起可用。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。
支持将纯(例如,“3.14”和“1000”)和科学数字表示(例如,“1e-5”和“1E8”)中的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有一些字符串字面量保留给特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何可以不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。同样,此不区分大小写规则也适用于“INF”和“NaN”。将数值张量转换为字符串张量时,将使用纯浮点表示(例如“314.15926”)。转换非数字字面量字符串(例如“Hello World!”)是未定义行为。将表示浮点算数值的字符串(例如“2.718”)转换为 INT 是未定义行为。
数值类型之间的转换始终允许。用户必须注意由于两种类型之间的范围差异导致的精度损失和值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
更详细地,如果目标类型不是浮点 8 类型,则数值类型之间的转换应遵循以下规则。
从浮点数转换到
浮点数:如果超出范围(OOR),则为 +/- 无穷大。
定点数:如果超出范围,则未定义。
布尔值:+/- 0.0 为 False;所有其他值为 True。
从定点数转换到
浮点数:如果超出范围,则为 +/- 无穷大。(对于无符号整数为 + 无穷大)
定点数:当超出范围时,丢弃高位并重新解释(对于有符号类型,根据二进制补码表示)。例如,200 (int16) -> -56 (int8)。
布尔值:零为 False;非零为 True。
从布尔值转换到
浮点数:
{1.0, 0.0}
。定点数:
{1, 0}
。布尔值:无变化。
引入了浮点 8 类型以加速深度模型的训练。默认情况下,浮点数 *x* 的转换遵循以下规则。[x]
表示四舍五入到目标尾数宽度的值。
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
Inf |
FLT_MAX |
NaN |
FLT_MAX |
NaN |
-Inf |
-FLT_MAX |
NaN |
-FLT_MAX |
NaN |
[x] > FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
[x] < -FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
else |
RNE |
RNE |
RNE |
RNE |
如果参数“saturate”设置为 False,则行为会改变。规则变为
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
-NaN |
-NaN |
NaN |
-NaN |
NaN |
Inf |
NaN |
NaN |
Inf |
NaN |
-Inf |
-NaN |
NaN |
-Inf |
NaN |
[x] > FLT_MAX |
NaN |
NaN |
Inf |
NaN |
[x] < -FLT_MAX |
NaN |
NaN |
-Inf |
NaN |
else |
RNE |
RNE |
RNE |
RNE |
属性¶
saturate - 整型 (默认为
'1'
)该参数定义了如果输入值超出目标类型范围,转换的行为方式。它仅适用于浮点 8 转换 (float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz)。默认情况下为 true。所有情况都在运算符描述中的两个表格中完整描述。
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从复数类型转换。
T2 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为复数类型。
Cast - 19¶
版本¶
名称: Cast (GitHub)
域:
main
since_version:
19
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自 版本 19 起可用。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。
支持将纯(例如,“3.14”和“1000”)和科学数字表示(例如,“1e-5”和“1E8”)中的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有一些字符串字面量保留给特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何可以不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。同样,此不区分大小写规则也适用于“INF”和“NaN”。将数值张量转换为字符串张量时,将使用纯浮点表示(例如“314.15926”)。转换非数字字面量字符串(例如“Hello World!”)是未定义行为。将表示浮点算数值的字符串(例如“2.718”)转换为 INT 是未定义行为。
数值类型之间的转换始终允许。用户必须注意由于两种类型之间的范围差异导致的精度损失和值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
更详细地,如果目标类型不是浮点 8 类型,则数值类型之间的转换应遵循以下规则。
从浮点数转换到
浮点数:如果超出范围(OOR),则为 +/- 无穷大。
定点数:如果超出范围,则未定义。
布尔值:+/- 0.0 为 False;所有其他值为 True。
从定点数转换到
浮点数:如果超出范围,则为 +/- 无穷大。(对于无符号整数为 + 无穷大)
定点数:当超出范围时,丢弃高位并重新解释(对于有符号类型,根据二进制补码表示)。例如,200 (int16) -> -56 (int8)。
布尔值:零为 False;非零为 True。
从布尔值转换到
浮点数:
{1.0, 0.0}
。定点数:
{1, 0}
。布尔值:无变化。
引入了浮点 8 类型以加速深度模型的训练。默认情况下,浮点数 *x* 的转换遵循以下规则。[x]
表示四舍五入到目标尾数宽度的值。
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
Inf |
FLT_MAX |
NaN |
FLT_MAX |
NaN |
-Inf |
-FLT_MAX |
NaN |
-FLT_MAX |
NaN |
[x] > FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
FLT_MAX |
[x] < -FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
-FLT_MAX |
else |
RNE |
RNE |
RNE |
RNE |
如果参数“saturate”设置为 False,则行为会改变。规则变为
x |
E4M3FN |
E4M3FNUZ |
E5M2 |
E5M2FNUZ |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
-0 |
-0 |
0 |
-0 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
-NaN |
-NaN |
NaN |
-NaN |
NaN |
Inf |
NaN |
NaN |
Inf |
NaN |
-Inf |
-NaN |
NaN |
-Inf |
NaN |
[x] > FLT_MAX |
NaN |
NaN |
Inf |
NaN |
[x] < -FLT_MAX |
NaN |
NaN |
-Inf |
NaN |
else |
RNE |
RNE |
RNE |
RNE |
属性¶
saturate - 整型 (默认为
'1'
)该参数定义了如果输入值超出目标类型范围,转换的行为方式。它仅适用于浮点 8 转换 (float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz)。默认情况下为 true。所有情况都在运算符描述中的两个表格中完整描述。
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从复数类型转换。
T2 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为复数类型。
Cast - 13¶
版本¶
名称: Cast (GitHub)
域:
main
起始版本:
13
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自 版本 13 起可用。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。
支持将纯(例如,“3.14”和“1000”)和科学数字表示(例如,“1e-5”和“1E8”)中的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有一些字符串字面量保留给特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何可以不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。同样,此不区分大小写规则也适用于“INF”和“NaN”。将数值张量转换为字符串张量时,将使用纯浮点表示(例如“314.15926”)。转换非数字字面量字符串(例如“Hello World!”)是未定义行为。将表示浮点算数值的字符串(例如“2.718”)转换为 INT 是未定义行为。
数值类型之间的转换始终允许。用户必须注意由于两种类型之间的范围差异导致的精度损失和值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
更详细地,数值类型之间的转换应遵循以下规则
从浮点数转换到
浮点数:如果超出范围(OOR),则为 +/- 无穷大。
定点数:如果超出范围,则未定义。
布尔值:+/- 0.0 为 False;所有其他值为 True。
从定点数转换到
浮点数:如果超出范围,则为 +/- 无穷大。(对于无符号整数为 + 无穷大)
定点数:当超出范围时,丢弃高位并重新解释(对于有符号类型,根据二进制补码表示)。例如,200 (int16) -> -56 (int8)。
布尔值:零为 False;非零为 True。
从布尔值转换到
浮点数:
{1.0, 0.0}
。定点数:
{1, 0}
。布尔值:无变化。
属性¶
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从复数类型转换。
T2 在 (
tensor(bfloat16)
,tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为复数类型。
Cast - 9¶
版本¶
名称: Cast (GitHub)
域:
main
起始版本:
9
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自 版本 9 起可用。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。
支持将纯(例如,“3.14”和“1000”)和科学数字表示(例如,“1e-5”和“1E8”)中的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有一些字符串字面量保留给特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何可以不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。同样,此不区分大小写规则也适用于“INF”和“NaN”。将数值张量转换为字符串张量时,将使用纯浮点表示(例如“314.15926”)。转换非数字字面量字符串(例如“Hello World!”)是未定义行为。将表示浮点算数值的字符串(例如“2.718”)转换为 INT 是未定义行为。
数值类型之间的转换始终允许。用户必须注意由于两种类型之间的范围差异导致的精度损失和值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
属性¶
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从复数类型转换。
T2 在 (
tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为复数类型。
Cast - 6¶
版本¶
名称: Cast (GitHub)
域:
main
起始版本:
6
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自版本 6 起可用。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。注意:尚不支持字符串之间的转换。
属性¶
to - 整型 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从字符串和复数类型转换。
T2 在 (
tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为字符串和复数类型。
Cast - 1¶
版本¶
名称: Cast (GitHub)
域:
main
起始版本:
1
函数:
False
支持级别:
SupportType.COMMON
形状推断:
False
此版本的运算符自 版本 1 起可用。
摘要¶
该运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回相同大小的转换类型输出张量。“to”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。注意:尚不支持字符串之间的转换。
属性¶
to - 字符串 (必填)
输入张量的元素将被转换的数据类型。严格来说,必须是 TensorProto 中 DataType 枚举的类型之一
输入¶
input (异构) - T1
待转换的输入张量。
输出¶
output (异构) - T2
形状与输入相同,类型由“to”参数指定的输出张量。
类型约束¶
T1 在 (
tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输入类型。不支持从字符串和复数类型转换。
T2 在 (
tensor(bool)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)约束输出类型。不支持转换为字符串和复数类型。