Класс CategoryEncoding
Класс CategoryEncoding предназначен для
кодирования целочисленных категориальных
признаков. Он принимает на вход тензор целых
чисел и преобразует каждое значение в
многомерный вектор (one-hot, multi-hot или
count). Первым параметром передается список
или целое число, задающее размер словаря
(число возможных категорий). Вторым параметром
можно указать способ кодирования через
output_mode: 'one_hot',
'multi_hot' или 'count'.
Также доступен параметр sparse,
включающий разреженный вывод.
Синтаксис
tf.keras.layers.CategoryEncoding(
num_tokens, [output_mode], [sparse]
)
Пример
Давайте закодируем тензор целых чисел
1, 2, 3 в режиме
'one_hot' с размером словаря 5:
import tensorflow as tf
layer = tf.keras.layers.CategoryEncoding(
num_tokens=5,
output_mode='one_hot'
)
res = layer(tf.constant([1, 2, 3]))
print(res)
Результат выполнения кода:
tf.Tensor(
[[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]], shape=(3, 5), dtype=float32)
Пример
Давайте закодируем двумерный тензор
1, 2 и 3, 4
в режиме 'multi_hot':
import tensorflow as tf
layer = tf.keras.layers.CategoryEncoding(
num_tokens=5,
output_mode='multi_hot'
)
res = layer(tf.constant([[1, 2], [3, 4]]))
print(res)
Результат выполнения кода:
tf.Tensor(
[[0. 1. 1. 0. 0.]
[0. 0. 0. 1. 1.]], shape=(2, 5), dtype=float32)
Пример
Давайте закодируем тензор
1, 1, 2 в режиме
'count' с размером словаря 4:
import tensorflow as tf
layer = tf.keras.layers.CategoryEncoding(
num_tokens=4,
output_mode='count'
)
res = layer(tf.constant([1, 1, 2]))
print(res)
Результат выполнения кода:
tf.Tensor([0. 2. 1. 0.], shape=(4,), dtype=float32)
Пример
Давайте получим разреженное представление
для тензора 1, 3 в режиме
'one_hot':
import tensorflow as tf
layer = tf.keras.layers.CategoryEncoding(
num_tokens=5,
output_mode='one_hot',
sparse=True
)
res = layer(tf.constant([1, 3]))
print(res)
Результат выполнения кода:
SparseTensor(
indices=tf.Tensor(
[[0 1]
[1 3]], shape=(2, 2), dtype=int64),
values=tf.Tensor([1. 1.], shape=(2,), dtype=float32),
dense_shape=tf.Tensor([2 5], shape=(2,), dtype=int64))
Смотрите также
-
класс
IntegerLookup,
который преобразует строки в целые числа -
класс
Discretization,
который разбивает непрерывные признаки на интервалы -
функцию
to_number,
которая преобразует строки в числа -
функцию
as_string,
которая преобразует числа в строки