Data can be inserted by calling the insert method and removed by calling the remove method. It does not support initialization via the init method.
Compared to MutableHashTable, DenseHashTable offers generally faster insert, remove and lookup operations, in exchange for a higher overall memory footprint.
It uses "open addressing" with quadratic reprobing to resolve collisions. This requires specifying two keys in the key space, empty_key and deleted_key, that can never inserted into the table.
Unlike MutableHashTable, DenseHashTable does not require additional memory for temporary tensors created during checkpointing and restore operations.
The value to use if a key is missing in the table.
empty_key
the key to use to represent empty buckets internally. Must not be used in insert, remove or lookup operations.
deleted_key
the key to use to represent deleted buckets internally. Must not be used in insert, remove or lookup operations and be different from the empty_key.
initial_num_buckets
the initial number of buckets (optional, default to 2^17=131072). Note that the default value is relatively large (~1MB), so if you are going to create many tables (likely the case when experimental_is_anonymous is True), you should set initial_num_buckets to a smaller value to reduce memory usage.
name
A name for the operation (optional).
checkpoint
if True, the contents of the table are saved to and restored from checkpoints. If shared_name is empty for a checkpointed table, it is shared using the table node name.
experimental_is_anonymous
Whether to use anonymous mode for the table (default is False). In anonymous mode, the table resource can only be accessed via a resource handle. It can't be looked up by a name. When all resource handles pointing to that resource are gone, the resource will be deleted automatically.
Raises
ValueError
If checkpoint is True and no name was specified.
Attributes
key_dtype
The table key dtype.
name
The name of the table.
resource_handle
Returns the resource handle associated with this Resource.