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. Однако он может использоваться с любым бэкэндом при выполнении в режиме eagerly. Он также всегда может использоваться в качестве части входной предобработки с любым бэкэндом (вне самой модели), и именно так мы рекомендуем использовать этот слой.
Примечание: Этот слой можно безопасно использовать внутри tf.data pipeline (независимо от используемого бэкэнда).

Пример (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. Также поддерживается кортеж/список из 2 беззнаковых целых чисел, см. справочную статью для получения подробной информации. По умолчанию 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, способным создать тот же слой из словаря конфигурации. Он не обрабатывает связность слоя (обрабатывается сетью), а также веса (обрабатываются 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