【问题标题】:Lookup HashTable key, value pairs after loading SavedModel in Tensorflow在 Tensorflow 中加载 SavedModel 后查找 HashTable 键、值对
【发布时间】:2019-07-26 14:13:59
【问题描述】:

我在 Tensorflow 中初始化了一个简单的 HashTable 并使用 SavedModelBuilder

保存了模型
with tf.Session() as sess:

    file_name = tf.constant("vocab_target.txt", tf.string)

    id_to_vocab_init = tf.contrib.lookup.TextFileStringTableInitializer(
        file_name,
        key_column_index=1,
        value_column_index=0,
        vocab_size=None,
        delimiter='\t',
    )

    id_to_vocab_table = tf.contrib.lookup.HashTable(id_to_vocab_init, "UNK")

    indices = tf.constant([1, 2], tf.int64)
    values = id_to_vocab_table.lookup(indices)

    init_op = tf.group(tf.tables_initializer(), tf.global_variables_initializer())
    sess.run(init_op)

    print(values.eval())

    builder = tf.saved_model.builder.SavedModelBuilder('./export/')
    builder.add_meta_graph_and_variables(sess, ["serve"], legacy_init_op=init_op)
    builder.save()

在保存之前,我可以使用 id_to_vocab_table.lookup 轻松查找值

现在,加载保存的模型后,

with tf.Session(graph=tf.Graph()) as sess:
    tf.saved_model.loader.load(sess, ["serve"], './export/')

如何类似地查询/查找哈希表?

(也就是说,加载 SavedModel 后如何访问该 HashTable 对象)

跟进: 如果表没有任何 <key, value> 对,我该如何初始化?

【问题讨论】:

    标签: tensorflow hashtable


    【解决方案1】:

    在调用add_meta_graph_and_variables() 方法时添加signature_def_map 参数。签名的输入和输出可以由tf.saved_model.utils.build_tensor_info(tensor) 收缩,张量分别为indicesvalues

    获取并加载保存的模型后,照常使用sess.run()

    indices_tensor = sess.graph.get_tensor_by_name(indices_tensor_name)
    values_tensor = sess.graph.get_tensor_by_name(values_tensor_name)
    sess.run([values_tensor],feed_dict={indices_tensor : [${real_data}]})
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多