具有更快查找和更高内存使用率的可变哈希表。
用法
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_anonymous
为True
的情况),您应该将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
, remove
和 lookup
操作,以换取更高的整体内存占用。
它使用带有二次重新探测的"open addressing" 来解决冲突。这需要在键空间中指定两个键 empty_key
和 deleted_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])
相关用法
- Python tf.lookup.experimental.MutableHashTable用法及代码示例
- Python tf.lookup.experimental.MutableHashTable.lookup用法及代码示例
- Python tf.lookup.KeyValueTensorInitializer用法及代码示例
- Python tf.lookup.TextFileInitializer用法及代码示例
- Python tf.lookup.StaticHashTable用法及代码示例
- Python tf.lookup.StaticVocabularyTable用法及代码示例
- Python tf.linalg.LinearOperatorFullMatrix.matvec用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.solve用法及代码示例
- Python tf.linalg.LinearOperatorIdentity.solvevec用法及代码示例
- Python tf.linalg.LinearOperatorPermutation.solve用法及代码示例
- Python tf.lite.Interpreter.get_signature_runner用法及代码示例
- Python tf.lite.experimental.QuantizationDebugger用法及代码示例
- Python tf.linalg.band_part用法及代码示例
- Python tf.linalg.LinearOperatorKronecker.diag_part用法及代码示例
- Python tf.linalg.lu_matrix_inverse用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.matvec用法及代码示例
- Python tf.linalg.LinearOperatorBlockLowerTriangular.solvevec用法及代码示例
- Python tf.lite.Interpreter.tensor用法及代码示例
- Python tf.linalg.LinearOperatorLowerTriangular.matvec用法及代码示例
- Python tf.linalg.LinearOperatorCirculant2D.solve用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.lookup.experimental.DenseHashTable。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。