Spec-Zone.ru › TensorFlow 2.9

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 = 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.
Атрибуты
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/versions/r2.9/api_docs/python/tf/compat/v1/lookup/StaticVocabularyTable

Spec-Zone.ru

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