Spec-Zone.ru › TensorFlow

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"; в зависимости от выбранного значения слой настраивается следующим образом:
  • "int": возвращает непосредственно целочисленные индексы корзин.
  • "one_hot": кодирует каждый отдельный элемент входных данных в массив размером num_bins, содержащий 1 по индексу корзины этого элемента. Если размер последнего измерения равен 1, кодирование выполняется по этому измерению. Если размер последнего измерения не равен 1, для закодированных выходных данных добавляется новое измерение.
  • "multi_hot": кодирует каждый пример из входных данных в один массив размером num_bins, содержащий 1 для каждого индекса корзины, присутствующего в примере. Последнее измерение считается измерением примеров. Если форма входных данных — (..., sample_length), форма выходных данных будет (..., num_tokens).
  • "count": аналогично "multi_hot", но целочисленный массив содержит количество появлений индекса корзины в примере. По умолчанию — "int".
sparse Логическое значение. Применимо только к режимам выходных данных "one_hot", "multi_hot" и "count". Поддерживается только бэкендом TensorFlow. Если указано True, возвращается SparseTensor вместо плотного Tensor. По умолчанию — False.
**kwargs Именованные аргументы для создания слоя.
Форма входных данных
Одна строка, список строк либо тензор int32 или int64 формы (batch_size, ...,).
Форма выходных данных
Тензор int32 формы (batch_size, ...).

Ссылки:

  • SipHash с солью
Атрибуты
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API