tf.keras.layers.Hashing
Слой предобработки, который хеширует категориальные признаки и распределяет их по корзинам.
Наследуется от: Layer, Operation
tf.keras.layers.Hashing(
num_bins,
mask_value=None,
salt=None,
output_mode='int',
sparse=False,
**kwargs
)
Используется в блокнотах
| Используется в руководстве | Используется в учебных материалах |
|---|---|
Этот слой преобразует категориальные входные данные в хешированные выходные данные. Он поэлементно преобразует целые числа или строки в целые числа из фиксированного диапазона. Стабильная хеш-функция использует tensorflow::ops::Fingerprint, чтобы последовательно создавать одинаковые выходные данные на всех платформах.
По умолчанию этот слой использует FarmHash64, которая обеспечивает согласованные хешированные выходные данные на разных платформах и стабильна при каждом вызове независимо от устройства и контекста благодаря тщательному перемешиванию входных битов.
Чтобы скрыть хешированные выходные данные, можно также передать в конструктор случайный аргумент salt. В этом случае слой будет использовать хеш-функцию SipHash64, а значение salt будет дополнительным входным параметром хеш-функции.
Примечание: Этот слой внутри использует TensorFlow. Его нельзя использовать в составе скомпилированного графа вычислений модели с любым бэкендом, кроме TensorFlow. Однако его можно использовать с любым бэкендом при выполнении в eager-режиме. Его также всегда можно использовать в составе конвейера предварительной обработки входных данных с любым бэкендом (вне самой модели); именно такой способ использования мы рекомендуем.
Примечание: Этот слой можно безопасно использовать в конвейере tf.data (независимо от используемого бэкенда).
Пример (FarmHash64)
layer = keras.layers.Hashing(num_bins=3)
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
array([[1],
[0],
[1],
[1],
[2]])>Пример (FarmHash64) со значением маски
layer = keras.layers.Hashing(num_bins=3, mask_value='')
inp = [['A'], ['B'], [''], ['C'], ['D']]
layer(inp)
array([[1],
[1],
[0],
[2],
[2]])Пример (SipHash64)
layer = keras.layers.Hashing(num_bins=3, salt=[133, 137])
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
array([[1],
[2],
[1],
[0],
[2]])Пример (Siphash64 с одним целым числом, как и salt=[133, 133])
layer = keras.layers.Hashing(num_bins=3, salt=133)
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
array([[0],
[0],
[2],
[1],
[0]])| Аргументы | |
|---|---|
num_bins | Количество хеш-корзин. Обратите внимание, что сюда входит корзина mask_value, поэтому эффективное количество корзин равно (num_bins - 1), если задано mask_value. |
mask_value | Значение, обозначающее замаскированные входные данные, которым присваивается индекс 0. None означает, что элемент маски не будет добавлен и хеширование начнётся с индекса 0. По умолчанию — None. |
salt | Одно беззнаковое целое число или None. Если указано это значение, будет использоваться хеш-функция SipHash64, а эти значения будут дополнительными входными данными (в криптографии они называются «солью»). Значения должны быть ненулевыми. Если указано None, используется хеш-функция FarmHash64. Также поддерживаются кортеж/список из двух беззнаковых целых чисел; подробности см. в статье. По умолчанию — None. |
output_mode | Спецификация выходных данных слоя. Значениями могут быть "int", "one_hot", "multi_hot" или "count"; в зависимости от выбранного значения слой настраивается следующим образом:
|
sparse | Логическое значение. Применимо только к режимам выходных данных "one_hot", "multi_hot" и "count". Поддерживается только бэкендом TensorFlow. Если указано True, возвращается SparseTensor вместо плотного Tensor. По умолчанию — False. |
**kwargs | Именованные аргументы для создания слоя. |
| Форма входных данных | |
|---|---|
Одна строка, список строк либо тензор int32 или int64 формы (batch_size, ...,). |
| Форма выходных данных | |
|---|---|
Тензор int32 формы (batch_size, ...). |
Ссылки:
| Атрибуты | |
|---|---|
input | Получает входные тензоры символьной операции. Возвращает только тензоры, соответствующие первому вызову операции. |
output | Получает выходные тензоры слоя. Возвращает только тензоры, соответствующие первому вызову операции. |
Методы
from_config
@classmethod
from_config(
config
)
Создаёт слой на основе его конфигурации.
Этот метод является обратным к get_config и позволяет создать такой же слой из словаря конфигурации. Он не обрабатывает связи между слоями (это делает Network) и веса (это делает set_weights).
| Аргументы | |
|---|---|
config | Словарь Python, обычно являющийся результатом вызова get_config. |
| Возвращает | |
|---|---|
| Экземпляр слоя. |
symbolic_call
symbolic_call(
*args, **kwargs
)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/Hashing