tf.keras.layers.experimental.preprocessing.Hashing
Реализует хэширование категориальных признаков, также известное как «хэширование трюк».
Наследуется от: PreprocessingLayer, Layer, Module
tf.keras.layers.experimental.preprocessing.Hashing(
num_bins, salt=None, name=None, **kwargs
)
Этот слой преобразует один или несколько категориальных входных данных в хэшированный вывод. Он преобразует последовательность целых чисел или строк в последовательность целых чисел. Стабильная хеш-функция использует tensorflow::ops::Fingerprint для производства универсального вывода, который согласован на разных платформах.
Этот слой по умолчанию использует FarmHash64, который обеспечивает согласованный хэшированный вывод на разных платформах и является стабильным при вызовах, независимо от устройства и контекста, путем тщательного смешивания битов входных данных.
Если вы хотите замаскировать хэшированный вывод, вы также можете передать аргумент salt в конструкторе. В этом случае слой будет использовать хеш-функцию SipHash64, а значение salt будет использоваться как дополнительный вход в хеш-функцию.
Пример (FarmHash64):
layer = tf.keras.layers.experimental.preprocessing.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.experimental.preprocessing.Hashing(num_bins=3)
>>> inp_1 = [['A'], ['B'], ['C'], ['D'], ['E']]
>>> inp_2 = np.asarray([[5], [4], [3], [2], [1]])
>>> layer([inp_1, inp_2])
<tf.Tensor: shape=(5, 1), dtype=int64, numpy=
array([[1],
[1],
[0],
[2],
[0]])>
Пример (SipHash64):
layer = tf.keras.layers.experimental.preprocessing.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.experimental.preprocessing.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]])>
Ссылка: SipHash с солью
| Аргументы | |
|---|---|
num_bins | Количество ячеек хеша. |
salt | Одно целое без знака или None. Если передано, используемая хеш-функция будет SipHash64, а эти значения будут использованы как дополнительный вход (известный в криптографии как «соль»). Они должны быть отличны от нуля. По умолчанию None (в этом случае используется хеш-функция FarmHash64). Также поддерживает кортеж/список из 2 целых без знака, см. справочную статью для получения подробностей. |
name | Имя, присваиваемое слою. |
**kwargs | Аргументы ключевых слов для построения слоя. |
Форма входных данных: Одна или список строк, int32 или int64 Tensor, SparseTensor или RaggedTensor формы [batch_size, ...,]
Форма выходных данных: int64 Tensor, SparseTensor или RaggedTensor формы [batch_size, ...]. Если любой вход RaggedTensor то выход RaggedTensor, в противном случае, если любой вход SparseTensor то выход SparseTensor, в противном случае выход Tensor.
Методы
adapt
adapt(
data, reset_state=True
)
Подгоняет состояние слоя предобработки к передаваемым данным.
| Аргументы | |
|---|---|
data | Данные для обучения. Можно передать либо как объект tf.data Dataset, либо как массив numpy. |
reset_state | Необязательный аргумент, указывающий, следует ли очистить состояние слоя в начале вызова adapt, или следует ли начать с текущего состояния. Этот аргумент может быть неактуален для всех слоев предобработки: подкласс PreprocessingLayer может вызвать ошибку, если 'reset_state' установлен в False. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/layers/experimental/preprocessing/Hashing