Spec-Zone.ru › TensorFlow

tf.compat.v1.lookup.StaticVocabularyTable

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

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

tf.compat.v1.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])

Функция хеширования, используемая для генерации идентификаторов корзин вне словаря, — 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.
Атрибуты
initializer
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/compat/v1/lookup/StaticVocabularyTable

Spec-Zone.ru

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