Функция strings.to_hash_bucket_fast
Функция strings.to_hash_bucket_fast преобразует строковый тензор
в тензор целых чисел, где каждое число представляет номер корзины
(хеш-бакета). Первым параметром передается строковый тензор,
вторым - целое число num_buckets, задающее количество корзин.
Функция использует быстрый детерминированный алгоритм хеширования
без защиты от коллизий, что делает ее подходящей для задач,
где важна скорость, а не криптостойкость: например, для
преобразования категориальных признаков в индексы перед
подачей в слой Embedding.
Синтаксис
tf.strings.to_hash_bucket_fast(input, num_buckets, name=None)
Параметр input принимает строковый тензор типа string.
Параметр num_buckets задает количество корзин, в которые
будут распределены строки. Параметр name задает
необязательное имя операции.
Пример
Давайте преобразуем строковый тензор в индексы корзин с десятью бакетами:
import tensorflow as tf
t = tf.constant(['abcde', 'model.keras', 'abcde'])
res = tf.strings.to_hash_bucket_fast(t, 10)
print(res)
Результат выполнения кода:
tf.Tensor([5 8 5], shape=(3,), dtype=int64)
Обратите внимание: одинаковые строки получают одинаковый номер корзины, так как хеширование детерминировано.
Пример
Давайте получим числовые значения индексов с помощью
метода numpy и посмотрим, как меняется результат
при разном количестве корзин:
import tensorflow as tf
t = tf.constant(['abcde', 'model.keras', 'abcde'])
res = tf.strings.to_hash_bucket_fast(t, 100)
print(res.numpy())
Результат выполнения кода:
[55 88 55]
Числа изменились, но одинаковые строки по-прежнему попадают в одну и ту же корзину.
Пример
Давайте применим функцию к двумерному строковому тензору:
import tensorflow as tf
t = tf.constant([['abcde', 'model.keras'], ['model.keras', 'abcde']])
res = tf.strings.to_hash_bucket_fast(t, 10)
print(res)
Результат выполнения кода:
tf.Tensor(
[[5 8]
[8 5]], shape=(2, 2), dtype=int64)
Функция сохраняет форму входного тензора, заменяя каждую строку соответствующим индексом корзины.
Смотрите также
-
функцию
to_hash_bucket,
которая преобразует строки в индексы корзин с защитой от коллизий -
функцию
to_number,
которая преобразует строки в числа -
функцию
join,
которая объединяет строковые тензоры -
функцию
length,
которая возвращает длину каждой строки