当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python tf.compat.v1.lookup.StaticHashTable用法及代码示例

一个初始化后不可变的通用哈希表。

继承自:StaticHashTableTrackableResource

用法

tf.compat.v1.lookup.StaticHashTable(
    initializer, default_value, name=None, experimental_is_anonymous=False
)

参数

  • initializer 要使用的表初始值设定项。有关受支持的键和值类型,请参阅HashTable 内核。
  • default_value 表中缺少键时使用的值。
  • name 操作的名称(可选)。
  • experimental_is_anonymous 是否对表使用匿名模式(默认为 False)。在匿名模式下,表资源只能通过资源句柄访问。它不能通过名字来查找。当所有指向该资源的资源句柄都消失时,该资源将被自动删除。

属性

  • default_value 表的默认值。
  • initializer
  • key_dtype 表键数据类型。
  • name 表的名称。
  • resource_handle 返回与此资源关联的资源句柄。
  • value_dtype 表值 dtype。

在图形模式下运行时,必须先评估 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))

在 Eager 模式下,不需要特殊代码来初始化表。即刻模式下的示例用法:

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))

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.lookup.StaticHashTable。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。