ai.onnx.ml - LabelEncoder¶
LabelEncoder - 4 (ai.onnx.ml)¶
版本¶
域:
ai.onnx.ml
起始版本:
4
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的算子自域 ai.onnx.ml 的 版本 4 起可用。
摘要¶
将输入张量中的每个元素映射到另一个值。
映射由两个并行属性‘keys_’和‘values_’决定。指定‘keys_’属性中的第 i 个值将映射到指定‘values_’属性中的第 i 个值。这意味着输入的元素类型和指定‘keys_’的元素类型应相同,而输出类型与指定‘values_’属性相同。请注意,‘keys_’和‘values_’属性必须具有相同的长度。如果在指定‘keys_’属性中找不到输入元素,则可以使用与指定‘values_’属性匹配的‘default_’作为其输出值。‘default_’属性的类型必须与所选的‘values_’属性类型匹配。
考虑一个将字符串张量映射到整数张量的示例。假设‘keys_strings’为 [“Amy”, “Sally”],‘values_int64s’为 [5, 6],‘default_int64’为 ‘-1’。输入 [“Dori”, “Amy”, “Amy”, “Sally”, “Sally”] 将被映射到 [-1, 5, 5, 6, 6]。
由于此算子是一对一映射,其输入和输出形状相同。请注意,‘keys_’/‘values_*’中只能设置一个。
值为‘NaN’的浮点键匹配任何输入‘NaN’值,无论其位值如何。如果键重复,则最后一个键优先。
属性¶
default_float - FLOAT (默认值为
'-0.0'
)一个浮点数。
default_int64 - INT (默认值为
'-1'
)一个整数。
default_string - STRING (默认值为
'_Unused'
)一个字符串。
default_tensor - TENSOR :
一个默认张量。如果 values\*\* 类型为字符串,则为{”\_Unused”};如果 values\*\_ 类型为整型,则为{-1};如果 values\*\_ 类型为浮点型,则为{-0.f}。
keys_floats - FLOATS :
浮点数列表。
keys_int64s - INTS :
整数列表。
keys_strings - STRINGS :
字符串列表。
keys_tensor - TENSOR :
编码为 1D 张量的键。‘keys\_*’中只能设置一个。
values_floats - FLOATS :
浮点数列表。
values_int64s - INTS :
整数列表。
values_strings - STRINGS :
字符串列表。
values_tensor - TENSOR :
编码为 1D 张量的值。‘values\_*’中只能设置一个。
输入¶
X (异构) - T1
输入数据。它必须与设置的 keys\*\_ 属性具有相同的元素类型。
输出¶
Y (异构) - T2
输出数据。此张量的元素类型基于设置的 values\*\_ 属性。
类型约束¶
T1 在 (
tensor(double)
,tensor(float)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(string)
) 中输入类型是任意形状的张量。
T2 在 (
tensor(double)
,tensor(float)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(string)
) 中输出类型由指定的‘values\*\_’属性决定。
示例¶
_string_int_label_encoder¶
import numpy as np
import onnx
node = onnx.helper.make_node(
"LabelEncoder",
inputs=["X"],
outputs=["Y"],
domain="ai.onnx.ml",
keys_strings=["a", "b", "c"],
values_int64s=[0, 1, 2],
default_int64=42,
)
x = np.array(["a", "b", "d", "c", "g"]).astype(object)
y = np.array([0, 1, 42, 2, 42]).astype(np.int64)
expect(
node,
inputs=[x],
outputs=[y],
name="test_ai_onnx_ml_label_encoder_string_int",
)
node = onnx.helper.make_node(
"LabelEncoder",
inputs=["X"],
outputs=["Y"],
domain="ai.onnx.ml",
keys_strings=["a", "b", "c"],
values_int64s=[0, 1, 2],
)
x = np.array(["a", "b", "d", "c", "g"]).astype(object)
y = np.array([0, 1, -1, 2, -1]).astype(np.int64)
expect(
node,
inputs=[x],
outputs=[y],
name="test_ai_onnx_ml_label_encoder_string_int_no_default",
)
_tensor_based_label_encoder¶
import numpy as np
import onnx
tensor_keys = make_tensor(
"keys_tensor", onnx.TensorProto.STRING, (3,), ["a", "b", "c"]
)
repeated_string_keys = ["a", "b", "c"]
x = np.array(["a", "b", "d", "c", "g"]).astype(object)
y = np.array([0, 1, 42, 2, 42]).astype(np.int16)
node = onnx.helper.make_node(
"LabelEncoder",
inputs=["X"],
outputs=["Y"],
domain="ai.onnx.ml",
keys_tensor=tensor_keys,
values_tensor=make_tensor(
"values_tensor", onnx.TensorProto.INT16, (3,), [0, 1, 2]
),
default_tensor=make_tensor(
"default_tensor", onnx.TensorProto.INT16, (1,), [42]
),
)
expect(
node,
inputs=[x],
outputs=[y],
name="test_ai_onnx_ml_label_encoder_tensor_mapping",
)
node = onnx.helper.make_node(
"LabelEncoder",
inputs=["X"],
outputs=["Y"],
domain="ai.onnx.ml",
keys_strings=repeated_string_keys,
values_tensor=make_tensor(
"values_tensor", onnx.TensorProto.INT16, (3,), [0, 1, 2]
),
default_tensor=make_tensor(
"default_tensor", onnx.TensorProto.INT16, (1,), [42]
),
)
expect(
node,
inputs=[x],
outputs=[y],
name="test_ai_onnx_ml_label_encoder_tensor_value_only_mapping",
)
LabelEncoder - 2 (ai.onnx.ml)¶
版本¶
域:
ai.onnx.ml
起始版本:
2
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的算子自域 ai.onnx.ml 的 版本 2 起可用。
摘要¶
将输入张量中的每个元素映射到另一个值。
映射由两个并行属性‘keys_’和‘values_’决定。指定‘keys_’属性中的第 i 个值将映射到指定‘values_’属性中的第 i 个值。这意味着输入的元素类型和指定‘keys_’的元素类型应相同,而输出类型与指定‘values_’属性相同。如果在指定‘keys_’属性中找不到输入元素,则可以使用与指定‘values_’属性匹配的‘default_’作为其输出值。
考虑一个将字符串张量映射到整数张量的示例。假设‘keys_strings’为 [“Amy”, “Sally”],‘values_int64s’为 [5, 6],‘default_int64’为 ‘-1’。输入 [“Dori”, “Amy”, “Amy”, “Sally”, “Sally”] 将被映射到 [-1, 5, 5, 6, 6]。
由于此算子是一对一映射,其输入和输出形状相同。请注意,‘keys_’/‘values_’中只能设置一个。
对于键查找,使用按位比较,因此即使是浮点 NaN 也可以映射到‘values_’属性中的值。
属性¶
default_float - FLOAT (默认值为
'-0.0'
)一个浮点数。
default_int64 - INT (默认值为
'-1'
)一个整数。
default_string - STRING (默认值为
'_Unused'
)一个字符串。
keys_floats - FLOATS :
浮点数列表。
keys_int64s - INTS :
整数列表。
keys_strings - STRINGS :
字符串列表。‘keys\*\_’中只能设置一个。
values_floats - FLOATS :
浮点数列表。
values_int64s - INTS :
整数列表。
values_strings - STRINGS :
字符串列表。‘value\*\_’中只能设置一个。
输入¶
X (异构) - T1
输入数据。可以是张量或标量。
输出¶
Y (异构) - T2
输出数据。
类型约束¶
T1 在 (
tensor(float)
,tensor(int64)
,tensor(string)
) 中输入类型是任意形状的张量。
T2 在 (
tensor(float)
,tensor(int64)
,tensor(string)
) 中输出类型由指定的‘values\*\_’属性决定。
LabelEncoder - 1 (ai.onnx.ml)¶
版本¶
域:
ai.onnx.ml
起始版本:
1
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的算子自域 ai.onnx.ml 的 版本 1 起可用。
摘要¶
将字符串转换为整数,反之亦然。
如果设置了字符串默认值,它将把整数转换为字符串。如果设置了整数默认值,它将把字符串转换为整数。
每个算子将整数转换为字符串或将字符串转换为整数,具体取决于提供了哪个默认值属性。只能定义一个默认值属性。
将整数转换为字符串时,通过简单的索引从‘classes_strings’列表中获取字符串。
将字符串转换为整数时,在列表中查找字符串,找到的索引用作转换后的值。
属性¶
classes_strings - STRINGS :
标签列表。
default_int64 - INT (默认值为
'-1'
)当输入字符串值在映射中找不到时使用的整数。
‘default\_*’属性中必须且只能定义一个。default_string - STRING (默认值为
'_Unused'
)当输入整数值在映射中找不到时使用的字符串。
‘default\_*’属性中必须且只能定义一个。
输入¶
X (异构) - T1
输入数据。
输出¶
Y (异构) - T2
输出数据。如果输入是字符串,则输出值为整数,反之亦然。
类型约束¶
T1 在 (
tensor(int64)
,tensor(string)
) 中输入类型必须是任意形状的整数或字符串张量。
T2 在 (
tensor(int64)
,tensor(string)
) 中输出类型将是字符串或整数张量,并且形状与输入相同。