Spec-Zone.ru › TensorFlow 2.9

tf.keras.layers.Hashing

Слой предобработки, который хеширует и группирует категориальные признаки.

Наследуется от: Layer, Module

Просмотр псевдонимов

Основные псевдонимы

tf.keras.layers.experimental.preprocessing.Hashing

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительных сведений.

tf.compat.v1.keras.layers.Hashing, tf.compat.v1.keras.layers.experimental.preprocessing.Hashing

tf.keras.layers.Hashing(
    num_bins,
    mask_value=None,
    salt=None,
    output_mode='int',
    sparse=False,
    **kwargs
)

Этот слой преобразует категориальные входные данные в хешированные выходные данные. Он поэлементно преобразует целые числа или строки в целые числа в фиксированном диапазоне. Стабильная хеш-функция использует tensorflow::ops::Fingerprint для получения одного и того же результата на всех платформах.

Этот слой по умолчанию использует FarmHash64, который обеспечивает согласованный хешированный результат на разных платформах и стабилен в вызовах, независимо от устройства и контекста, тщательно смешивая биты входных данных.

Если вам нужно замаскировать хешированный результат, вы также можете передать аргумент random salt в конструкторе. В этом случае слой будет использовать хеш-функцию SipHash64, а значение salt будет служить дополнительным вводом для хеш-функции.

Обзор и полный список слоев предобработки см. в руководстве по предобработке руководство.

Пример (FarmHash64)

layer = tf.keras.layers.Hashing(num_bins=3)
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
<tf.Tensor: shape=(5, 1), dtype=int64, numpy=
  array([[1],
         [0],
         [1],
         [1],
         [2]])>

Пример (FarmHash64) со значением маски

layer = tf.keras.layers.Hashing(num_bins=3, mask_value='')
inp = [['A'], ['B'], [''], ['C'], ['D']]
layer(inp)
<tf.Tensor: shape=(5, 1), dtype=int64, numpy=
  array([[1],
         [1],
         [0],
         [2],
         [2]])>

Пример (SipHash64)

layer = tf.keras.layers.Hashing(num_bins=3, salt=[133, 137])
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
<tf.Tensor: shape=(5, 1), dtype=int64, numpy=
  array([[1],
         [2],
         [1],
         [0],
         [2]])>

Пример (Siphash64 с одним целым числом, аналогично salt=[133, 133])

layer = tf.keras.layers.Hashing(num_bins=3, salt=133)
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
<tf.Tensor: shape=(5, 1), dtype=int64, numpy=
  array([[0],
         [0],
         [2],
         [1],
         [0]])>
Аргументы
num_bins Количество хеш-ячеек. Обратите внимание, что это включает mask_value ячейку, поэтому эффективное количество ячеек равно (num_bins - 1) если mask_value установлено.
mask_value Значение, представляющее входные данные с маской, которые отображаются в индекс 0. По умолчанию None, означающее, что термин маски не будет добавлен, и хеширование начнется с индекса 0.
salt Одно целое беззнаковое число или None. Если передано, используемая хеш-функция будет SipHash64, и эти значения будут использованы в качестве дополнительного входа (известного в криптографии как «соль»). Они должны быть отличны от нуля. По умолчанию None (в этом случае используется хеш-функция FarmHash64). Также поддерживается кортеж/список из 2 целых беззнаковых чисел, см. справочную статью для получения подробностей.
output_mode Описание выходных данных слоя. По умолчанию "int". Значения могут быть "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", но массив целых чисел содержит количество раз, когда индекс ячейки появился в выборке.
sparse Булево. Применимо только к "one_hot", "multi_hot", и "count" режимам вывода. Если True, возвращает SparseTensor вместо плотного Tensor. По умолчанию False.
**kwargs Ключевые аргументы для построения слоя.

Форма входных данных:

Один или список строк, int32 или int64 Tensor, SparseTensor или RaggedTensor формы (batch_size, ...,)

Форма выходных данных:

int64 Tensor, SparseTensor или RaggedTensor формы (batch_size, ...). Если любой вход RaggedTensor то выход RaggedTensor, в противном случае, если любой вход SparseTensor то выход SparseTensor, в противном случае выход Tensor.

Ссылка:

  • SipHash с солью

© 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/versions/r2.9/api_docs/python/tf/keras/layers/Hashing

Spec-Zone.ru

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