ai.onnx.ml - LabelEncoder¶
LabelEncoder - 4 (ai.onnx.ml)¶
Version¶
name: LabelEncoder (GitHub)
domain:
ai.onnx.ml
since_version:
4
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 4 of domain ai.onnx.ml.
Summary¶
Maps each element in the input tensor to another value.
The mapping is determined by the two parallel attributes, ‘keys_’ and
‘values_’ attribute. The i-th value in the specified ‘keys_’ attribute
would be mapped to the i-th value in the specified ‘values_’ attribute. It
implies that input’s element type and the element type of the specified
‘keys_’ should be identical while the output type is identical to the
specified ‘values_’ attribute. Note that the ‘keys_’ and ‘values_’ attributes
must have the same length. If an input element can not be found in the
specified ‘keys_’ attribute, the ‘default_’ that matches the specified
‘values_’ attribute may be used as its output value. The type of the ‘default_’
attribute must match the ‘values_’ attribute chosen.
Let’s consider an example which maps a string tensor to an integer tensor.
Assume and ‘keys_strings’ is [“Amy”, “Sally”], ‘values_int64s’ is [5, 6],
and ‘default_int64’ is ‘-1’. The input [“Dori”, “Amy”, “Amy”, “Sally”,
“Sally”] would be mapped to [-1, 5, 5, 6, 6].
Since this operator is an one-to-one mapping, its input and output shapes
are the same. Notice that only one of ‘keys_’/‘values_*’ can be set.
Float keys with value ‘NaN’ match any input ‘NaN’ value regardless of bit
value. If a key is repeated, the last key takes precedence.
Attributes¶
default_float - FLOAT (default is
'-0.0'
):A float.
default_int64 - INT (default is
'-1'
):An integer.
default_string - STRING (default is
'_Unused'
):A string.
default_tensor - TENSOR :
A default tensor. {”Unused”} if values* has string type, {-1} if values_* has integral type, and {-0.f} if values_* has float type.
keys_floats - FLOATS :
A list of floats.
keys_int64s - INTS :
A list of ints.
keys_strings - STRINGS :
A list of strings.
keys_tensor - TENSOR :
Keys encoded as a 1D tensor. One and only one of ‘keys_*’s should be set.
values_floats - FLOATS :
A list of floats.
values_int64s - INTS :
A list of ints.
values_strings - STRINGS :
A list of strings.
values_tensor - TENSOR :
Values encoded as a 1D tensor. One and only one of ‘values_*’s should be set.
Inputs¶
X (heterogeneous) - T1:
Input data. It must have the same element type as the keys_* attribute set.
Outputs¶
Y (heterogeneous) - T2:
Output data. This tensor’s element type is based on the values_* attribute set.
Type Constraints¶
T1 in (
tensor(double)
,tensor(float)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(string)
):The input type is a tensor of any shape.
T2 in (
tensor(double)
,tensor(float)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(string)
):Output type is determined by the specified ‘values_*’ attribute.
Examples¶
_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)¶
Version¶
name: LabelEncoder (GitHub)
domain:
ai.onnx.ml
since_version:
2
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 2 of domain ai.onnx.ml.
Summary¶
Maps each element in the input tensor to another value.
The mapping is determined by the two parallel attributes, ‘keys_’ and
‘values_’ attribute. The i-th value in the specified ‘keys_’ attribute
would be mapped to the i-th value in the specified ‘values_’ attribute. It
implies that input’s element type and the element type of the specified
‘keys_’ should be identical while the output type is identical to the
specified ‘values_’ attribute. If an input element can not be found in the
specified ‘keys_’ attribute, the ‘default_’ that matches the specified
‘values_’ attribute may be used as its output value.
Let’s consider an example which maps a string tensor to an integer tensor.
Assume and ‘keys_strings’ is [“Amy”, “Sally”], ‘values_int64s’ is [5, 6],
and ‘default_int64’ is ‘-1’. The input [“Dori”, “Amy”, “Amy”, “Sally”,
“Sally”] would be mapped to [-1, 5, 5, 6, 6].
Since this operator is an one-to-one mapping, its input and output shapes
are the same. Notice that only one of ‘keys_’/‘values_’ can be set.
For key look-up, bit-wise comparison is used so even a float NaN can be
mapped to a value in ‘values_’ attribute.
Attributes¶
default_float - FLOAT (default is
'-0.0'
):A float.
default_int64 - INT (default is
'-1'
):An integer.
default_string - STRING (default is
'_Unused'
):A string.
keys_floats - FLOATS :
A list of floats.
keys_int64s - INTS :
A list of ints.
keys_strings - STRINGS :
A list of strings. One and only one of ‘keys_*’s should be set.
values_floats - FLOATS :
A list of floats.
values_int64s - INTS :
A list of ints.
values_strings - STRINGS :
A list of strings. One and only one of ‘value_*’s should be set.
Inputs¶
X (heterogeneous) - T1:
Input data. It can be either tensor or scalar.
Outputs¶
Y (heterogeneous) - T2:
Output data.
Type Constraints¶
T1 in (
tensor(float)
,tensor(int64)
,tensor(string)
):The input type is a tensor of any shape.
T2 in (
tensor(float)
,tensor(int64)
,tensor(string)
):Output type is determined by the specified ‘values_*’ attribute.
LabelEncoder - 1 (ai.onnx.ml)¶
Version¶
name: LabelEncoder (GitHub)
domain:
ai.onnx.ml
since_version:
1
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 1 of domain ai.onnx.ml.
Summary¶
Converts strings to integers and vice versa.
If the string default value is set, it will convert integers to strings.
If the int default value is set, it will convert strings to integers.
Each operator converts either integers to strings or strings to integers, depending
on which default value attribute is provided. Only one default value attribute
should be defined.
When converting from integers to strings, the string is fetched from the
‘classes_strings’ list, by simple indexing.
When converting from strings to integers, the string is looked up in the list
and the index at which it is found is used as the converted value.
Attributes¶
classes_strings - STRINGS :
A list of labels.
default_int64 - INT (default is
'-1'
):An integer to use when an input string value is not found in the map.
One and only one of the ‘default_*’ attributes must be defined.default_string - STRING (default is
'_Unused'
):A string to use when an input integer value is not found in the map.
One and only one of the ‘default_*’ attributes must be defined.
Inputs¶
X (heterogeneous) - T1:
Input data.
Outputs¶
Y (heterogeneous) - T2:
Output data. If strings are input, the output values are integers, and vice versa.
Type Constraints¶
T1 in (
tensor(int64)
,tensor(string)
):The input type must be a tensor of integers or strings, of any shape.
T2 in (
tensor(int64)
,tensor(string)
):The output type will be a tensor of strings or integers, and will have the same shape as the input.