tf.compat.v1.lookup.StaticHashTable
Обобщённая хеш-таблица, неизменяемая после инициализации.
Наследуется от: StaticHashTable, TrackableResource
tf.compat.v1.lookup.StaticHashTable(
initializer, default_value, name=None, experimental_is_anonymous=False
)
При работе в режиме графа необходимо вычислить тензор, возвращаемый tf.tables_initializer(), прежде чем вычислять тензор, возвращаемый методом lookup() этого класса. Пример использования в режиме графа:
keys_tensor = tf.constant([1, 2])
vals_tensor = tf.constant([3, 4])
input_tensor = tf.constant([1, 5])
table = tf.lookup.StaticHashTable(
tf.lookup.KeyValueTensorInitializer(keys_tensor, vals_tensor), -1)
out = table.lookup(input_tensor)
with tf.Session() as sess:
sess.run(tf.tables_initializer())
print(sess.run(out))
Обратите внимание: если в режиме графа установить experimental_is_anonymous в значение True, следует вызвать Session.run только один раз. В противном случае каждый вызов Session.run будет создавать (и уничтожать) новую таблицу, не связанную с остальными, что приведёт к таким ошибкам, как «Таблица не инициализирована». Это можно сделать так:
keys_tensor = tf.constant([1, 2])
vals_tensor = tf.constant([3, 4])
input_tensor = tf.constant([1, 5])
table = tf.lookup.StaticHashTable(
tf.lookup.KeyValueTensorInitializer(keys_tensor, vals_tensor), -1,
experimental_is_anonymous=True)
with tf.control_dependencies([tf.tables_initializer()]):
out = table.lookup(input_tensor)
with tf.Session() as sess:
print(sess.run(out))
В нетерпеливом режиме для инициализации таблицы не требуется специальный код. Пример использования в нетерпеливом режиме:
tf.enable_eager_execution()
keys_tensor = tf.constant([1, 2])
vals_tensor = tf.constant([3, 4])
input_tensor = tf.constant([1, 5])
table = tf.lookup.StaticHashTable(
tf.lookup.KeyValueTensorInitializer(keys_tensor, vals_tensor), -1)
print(table.lookup(input_tensor))
| Аргументы | |
|---|---|
initializer | Инициализатор таблицы. Поддерживаемые типы ключей и значений см. в ядре HashTable. |
default_value | Значение, используемое, если ключ отсутствует в таблице. |
name | Имя операции (необязательно). |
experimental_is_anonymous | Использовать ли для таблицы анонимный режим (по умолчанию — False). В анонимном режиме доступ к ресурсу таблицы возможен только через дескриптор ресурса. Найти его по имени нельзя. Когда все дескрипторы, указывающие на этот ресурс, будут удалены, ресурс автоматически удалится. |
| Атрибуты | |
|---|---|
default_value | Значение таблицы по умолчанию. |
initializer | |
key_dtype | Тип данных ключей таблицы. |
name | Имя таблицы. |
resource_handle | Возвращает дескриптор ресурса, связанный с этим ресурсом. |
value_dtype | Тип данных значений таблицы. |
Методы
export
export(
name=None
)
Возвращает тензоры, содержащие все ключи и значения таблицы.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Пару тензоров: первый содержит все ключи, а второй — все значения таблицы. |
lookup
lookup(
keys, name=None
)
Ищет keys в таблице и возвращает соответствующие значения.
Для ключей, отсутствующих в таблице, используется default_value.
| Аргументы | |
|---|---|
keys | Ключи для поиска. Может быть SparseTensor или плотным Tensor. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
SparseTensor, если ключи разреженные; RaggedTensor, если ключи имеют структуру ragged; в противном случае — плотный Tensor. |
| Вызывает исключение | |
|---|---|
TypeError | если тип данных keys или default_value не соответствует типам данных таблицы. |
size
size(
name=None
)
Вычисляет количество элементов в этой таблице.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Скалярный тензор, содержащий количество элементов в этой таблице. |
__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/StaticHashTable