Spec-Zone.ru › TensorFlow

tf.compat.v1.lookup.StaticVocabularyTable

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

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

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

Например, если экземпляр 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.
Атрибуты
initializer
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/compat/v1/lookup/StaticVocabularyTable

Spec-Zone.ru

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