gpt4 book ai didi

TensorFlow:评估恢复图

转载 作者:行者123 更新时间:2023-12-02 20:49:51 25 4
gpt4 key购买 nike

我正在尝试从检查点恢复图表。检查点由 tf.Supervisor 创建。有元文件和检查点。

我试图实现的是从单独的应用程序加载此图表以运行某些操作(即恢复现有模型)。

我按照以下方式执行此操作(如此处所述: https://www.tensorflow.org/api_docs/python/tf/train/import_meta_graph ):

meta = 'path/to/file.meta'

my_graph = tf.Graph()
with my_graph.as_default():
with tf.Session() as sess:
saver = tf.train.import_meta_graph(meta)
saver.restore(sess, tf.train.latest_checkpoint(os.path.dirname(meta)))
op = my_graph.get_operation_by_name("op")
print(sess.run(op))

我看到的是。我期望看到的是一维张量。我使用 get_collection 检查了 my_graph 对象,发现 op 运行所需的所有变量都已使用从检查点恢复的值正确初始化。如何找出操作未正确评估的原因?我真的被困在这里了。

以下代码:

print(sess.run(my_graph.get_operation_by_name("Variable_2")))
print(sess.run(my_graph.get_tensor_by_name("Variable_2:0")))

打印

None
4818800

就好像操作和相应变量之间没有联系。

最佳答案

tf.Graph.get_operation_by_name() 方法总是返回 tf.Operation 目的。当您通过 tf.Operation反对 tf.Session.run() ,TensorFlow 将执行该操作(以及它所依赖的所有内容)并丢弃其输出(如果有)。

如果您对特定输出的值感兴趣,则必须告诉 TensorFlow 您对哪个输出( tf.Tensor )感兴趣。有两个主要选项:

  • 获取 tf.Operation从图中,然后选择其 outputs 之一:

    op = my_graph.get_operation_by_name("op")
    output = op.outputs[0]
    print(sess.run(output))
  • 获取 tf.Tensor通过调用 tf.Graph.get_tensor_by_name() 从图表中,并附加 ":<output index>"操作名称:

    output = my_graph.get_tensor_by_name("op:0")
    print(sess.run(output))

为什么 TensorFlow 会做出这样的区分?一方面,一个操作可以有多个输出,因此有时需要具体说明要获取哪个输出。另一方面,操作可能会产生副作用并产生大量输出 - 请参阅 tf.assign() 举个例子,传递tf.Operation通常会更有效。至sess.run()这样该值就不会复制回 Python 程序中。

关于TensorFlow:评估恢复图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42595543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com