ai.onnx.ml - LabelEncoder¶
LabelEncoder - 4 (ai.onnx.ml)¶
版本¶
網域:
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 :
編碼為 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
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)¶
版本¶
網域:
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)
)輸出類型將是字串或整數張量,並且將具有與輸入相同的形狀。