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 имеет тип:

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, если ключи имеют структуру ragged; в противном случае — плотный 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