Spec-Zone.ru › TensorFlow

tf.lookup.StaticVocabularyTable

Таблица соответствия строк идентификаторам, которая назначает ключи вне словаря в корзины хэшей.

Наследуется от: TrackableResource

tf.lookup.StaticVocabularyTable(
    initializer,
    num_oov_buckets,
    lookup_key_dtype=None,
    name=None,
    experimental_is_anonymous=False
)

Используется в ноутбуках

Используется в руководстве Используется в учебных пособиях
  • Токенизаторы подслов
  • Предварительная обработка BERT с помощью TF Text
  • Загрузка текста
  • Эффективное федеративное обучение больших моделей на клиентах с помощью `federated_select` и разреженной агрегации
  • Читатель Apache ORC

Например, если экземпляр StaticVocabularyTable инициализирован инициализатором строка-идентификатор, который отображает:

init = tf.lookup.KeyValueTensorInitializer(
    keys=tf.constant(['emerson', 'lake', 'palmer']),
    values=tf.constant([0, 1, 2], dtype=tf.int64))
table = tf.lookup.StaticVocabularyTable(
   init,
   num_oov_buckets=5)

Объект Vocabulary будет выполнять следующие преобразования:

  • emerson -> 0
  • lake -> 1
  • palmer -> 2
  • <other term> -> bucket_id, где bucket_id будет находиться между 3 и 3 + num_oov_buckets - 1 = 7, рассчитанное по формуле: hash(<term>) % num_oov_buckets + vocab_size

Если входной тензор:

input_tensor = tf.constant(["emerson", "lake", "palmer",
                            "king", "crimson"])
table[input_tensor].numpy()
array([0, 1, 2, 6, 7])

Если initializer равно None, используются только корзины для слов вне словаря.

Пример использования:

num_oov_buckets = 3
vocab = ["emerson", "lake", "palmer", "crimnson"]
import tempfile
f = tempfile.NamedTemporaryFile(delete=False)
f.write('\n'.join(vocab).encode('utf-8'))
f.close()
init = tf.lookup.TextFileInitializer(
    f.name,
    key_dtype=tf.string, key_index=tf.lookup.TextFileIndex.WHOLE_LINE,
    value_dtype=tf.int64, value_index=tf.lookup.TextFileIndex.LINE_NUMBER)
table = tf.lookup.StaticVocabularyTable(init, num_oov_buckets)
table.lookup(tf.constant(["palmer", "crimnson" , "king",
                          "tarkus", "black", "moon"])).numpy()
array([2, 3, 5, 6, 6, 4])

Функция хэширования для генерации идентификаторов корзин слов вне словаря — Fingerprint64.

Обратите внимание, что идентификаторы корзин для слов вне словаря всегда находятся в диапазоне от size до size + num_oov_buckets - 1 независимо от значений в таблице, что может привести к непредвиденным коллизиям:

init = tf.lookup.KeyValueTensorInitializer(
    keys=tf.constant(["emerson", "lake", "palmer"]),
    values=tf.constant([1, 2, 3], dtype=tf.int64))
table = tf.lookup.StaticVocabularyTable(
    init,
    num_oov_buckets=1)
input_tensor = tf.constant(["emerson", "lake", "palmer", "king"])
table[input_tensor].numpy()
array([1, 2, 3, 3])
Аргументы
initializer Объект TableInitializerBase, содержащий данные для инициализации таблицы. Если None, используются только корзины для слов вне словаря.
num_oov_buckets Количество корзин для ключей вне словаря. Должно быть больше нуля. Если корзины для слов вне словаря не требуются, используйте StaticHashTable.
lookup_key_dtype Тип данных ключей, передаваемых в lookup. По умолчанию initializer.key_dtype, если указан initializer, в противном случае tf.string. Должно быть строкой или целым числом, и должно быть приводимо к типу initializer.key_dtype.
name Имя операции (необязательно).
experimental_is_anonymous Использовать анонимный режим для таблицы (по умолчанию False). В анонимном режиме доступ к ресурсу таблицы возможен только через дескриптор ресурса. Его нельзя найти по имени. Когда все дескрипторы ресурсов, указывающие на этот ресурс, исчезнут, ресурс будет автоматически удален.
Исключения
ValueError если num_oov_buckets не положительно.
TypeError если lookup_key_dtype или initializer.key_dtype не целое число или строка. Также если initializer.value_dtype != int64.
Атрибуты
key_dtype Тип данных ключа таблицы.
name Имя таблицы.
resource_handle Возвращает дескриптор ресурса, связанный с этим ресурсом.
value_dtype Тип данных значения таблицы.

Методы

lookup

Просмотреть исходный код

lookup(
    keys, name=None
)

Выполняет поиск keys в таблице и возвращает соответствующие значения.

Присваивает ключи вне словаря в корзины на основе их хэшей.

Аргументы
keys Ключи для поиска. Может быть либо разреженным SparseTensor, либо плотным Tensor.
name Необязательное имя для операции.
Возвращаемые значения
Разреженный SparseTensor, если ключи разреженные, фрагментированный RaggedTensor, если ключи фрагментированные, в противном случае плотный Tensor.
Исключения
TypeError если keys не соответствует типу данных ключей таблицы.

size

Просмотреть исходный код

size(
    name=None
)

Вычисляет количество элементов в этой таблице.

__getitem__

Просмотреть исходный код

__getitem__(
    keys
)

Ищет keys в таблице, возвращает соответствующие значения.

© 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/lookup/StaticVocabularyTable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API