ai.onnx.ml - LabelEncoder

LabelEncoder - 4 (ai.onnx.ml)

版本

  • 名称: LabelEncoder (GitHub)

  • : ai.onnx.ml

  • since_version: 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 :

    编码为一维张量的键。必须设置‘keys_*’中的一个且仅一个。

  • values_floats - FLOATS :

    一个浮点数列表。

  • values_int64s - INTS :

    一个整数列表。

  • values_strings - STRINGS :

    一个字符串列表。

  • values_tensor - TENSOR :

    编码为一维张量的值。必须设置‘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)

版本

  • 名称: LabelEncoder (GitHub)

  • : ai.onnx.ml

  • since_version: 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)

版本

  • 名称: LabelEncoder (GitHub)

  • : 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) ) 中

    输出类型将是字符串或整数张量,并且形状与输入相同。