ai.onnx.ml - LabelEncoder

LabelEncoder - 4 (ai.onnx.ml)

版本

  • 名稱LabelEncoder (GitHub)

  • 網域ai.onnx.ml

  • since_version4

  • 函數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)

版本

  • 名稱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

  • since_version: 1

  • 函數False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此運算符的版本自 ai.onnx.ml 網域的版本 1 開始提供。

摘要

將字串轉換為整數,反之亦然。
如果設定了字串預設值,它會將整數轉換為字串。如果設定了整數預設值,它會將字串轉換為整數。
每個運算符根據提供的預設值屬性,將整數轉換為字串或將字串轉換為整數。應僅定義一個預設值屬性。
當從整數轉換為字串時,字串是透過簡單索引從 ‘classes_strings’ 列表中提取的。
當從字串轉換為整數時,會在列表中查找字串,並將找到它的索引用作轉換的值。

屬性

  • classes_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) )

    輸出類型將是字串或整數張量,並且將具有與輸入相同的形狀。