tf.keras.layers.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", определяя слой следующим образом:
|
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.
Ссылка:
© 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