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. Однако он может использоваться с любым бэкэндом при выполнении в режиме eagerly. Он также всегда может использоваться в качестве части входной предобработки с любым бэкэндом (вне самой модели), и именно так мы рекомендуем использовать этот слой.
Примечание: Этот слой можно безопасно использовать внутри tf.data pipeline (независимо от используемого бэкэнда).
Пример (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. Также поддерживается кортеж/список из 2 беззнаковых целых чисел, см. справочную статью для получения подробной информации. По умолчанию 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, способным создать тот же слой из словаря конфигурации. Он не обрабатывает связность слоя (обрабатывается сетью), а также веса (обрабатываются 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