當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.lookup.experimental.DenseHashTable用法及代碼示例


具有更快查找和更高內存使用率的可變哈希表。

繼承自:TrackableResource

用法

tf.lookup.experimental.DenseHashTable(
    key_dtype, value_dtype, default_value, empty_key, deleted_key,
    initial_num_buckets=None, name='MutableDenseHashTable',
    checkpoint=True, experimental_is_anonymous=False
)

參數

  • key_dtype 關鍵張量的類型。
  • value_dtype 值張量的類型。
  • default_value 表中缺少鍵時使用的值。
  • empty_key 用於在內部表示空桶的鍵。不得用於插入、刪除或查找操作。
  • deleted_key 用於在內部表示已刪除存儲桶的鍵。不得用於插入、刪除或查找操作,並且與 empty_key 不同。
  • initial_num_buckets 桶的初始數量(可選,默認為 2^17=131072)。請注意,默認值相對較大(~1MB),因此如果您要創建許多表(可能是 experimental_is_anonymousTrue 的情況),您應該將 initial_num_buckets 設置為較小的值以減少內存使用.
  • name 操作的名稱(可選)。
  • checkpoint 如果為 True,則表的內容將保存到檢查點並從檢查點恢複。如果檢查點表的shared_name 為空,則使用表節點名稱共享它。
  • experimental_is_anonymous 是否對表使用匿名模式(默認為 False)。在匿名模式下,表資源隻能通過資源句柄訪問。它不能通過名字來查找。當所有指向該資源的資源句柄都消失時,該資源將被自動刪除。

拋出

  • ValueError 如果檢查點為 True 且未指定名稱。

屬性

  • key_dtype 表鍵數據類型。
  • name 表的名稱。
  • resource_handle 返回與此資源關聯的資源句柄。
  • value_dtype 表值 dtype。

可以通過調用insert 方法插入數據,並通過調用remove 方法刪除數據。它不支持通過 init 方法進行初始化。

MutableHashTable , DenseHashTable 相比,通常提供更快的 insert , removelookup 操作,以換取更高的整體內存占用。

它使用帶有二次重新探測的"open addressing" 來解決衝突。這需要在鍵空間中指定兩個鍵 empty_keydeleted_key ,它們永遠不會插入到表中。

MutableHashTable , DenseHashTable 不同的是,在檢查點和恢複操作期間創建的臨時張量不需要額外的內存。

示例用法:

table = tf.lookup.experimental.DenseHashTable(
    key_dtype=tf.string,
    value_dtype=tf.int64,
    default_value=-1,
    empty_key='',
    deleted_key='$')
keys = tf.constant(['a', 'b', 'c'])
values = tf.constant([0, 1, 2], dtype=tf.int64)
table.insert(keys, values)
table.remove(tf.constant(['c']))
table.lookup(tf.constant(['a', 'b', 'c','d'])).numpy()
array([ 0,  1, -1, -1])

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.lookup.experimental.DenseHashTable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。