Spec-Zone.ru › TensorFlow 2.9

tf.lookup.StaticVocabularyTable

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

Таблица соответствия строка-ID, которая назначает ключи вне словаря в корзины хеширования.

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

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

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

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])

Функция хеширования, используемая для генерации ID корзин вне словаря, — Fingerprint64.

Обратите внимание, что ID корзин вне словаря всегда находятся в диапазоне от 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/versions/r2.9/api_docs/python/tf/lookup/StaticVocabularyTable

Spec-Zone.ru

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