tf.keras.layers.experimental.preprocessing.Hashing
Реализует хеширование категориальных признаков, также известное как «хеширование трюк».
Наследуется от: Layer
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])
Пример (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.
© 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.3/api_docs/python/tf/keras/layers/experimental/preprocessing/Hashing