【问题标题】:How to obtain Graph object for Session from saved graph.pb如何从保存的 graph.pb 中获取 Session 的 Graph 对象
【发布时间】:2017-09-24 18:19:14
【问题描述】:

我创建了一个张量流Graph。例如,我可以加载它

with tf.gfile.FastGFile(modelFullPath, 'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
    _ = tf.import_graph_def(graph_def, name='')

将 protobuffer 文件中定义的图形暂时作为默认图形。如果我现在创建一个会话,此图将用作当前图。

尝试将序列化的graph_def 对象保存到一个变量中并启动一个Session as

with tf.Session(graph=graph_def) as sess:

以预期的错误结束

TypeError: graph must be a tf.Graph, but got <class 'tensorflow.core.framework.graph_pb2.GraphDef'>

我有一个用例,我必须在多个图表之间进行更改。使用所提供的方法,我可以清除默认图形并加载新图形,但缺点是必须重复调用导入函数。

问题是,从我的graph.pb,如何获得Graph 对象my_graph,所以可以使用

with tf.Session(graph=my_graph) as sess:

在不从graph.pb 文件中重新加载图表的情况下创建会话?

【问题讨论】:

  • 你能告诉我你是怎么做到的吗?
  • @HaraHaraMahadevaki 就像建议的公认答案一样。
  • 谢谢...有点慢...有什么办法可以提高速度吗?

标签: python tensorflow


【解决方案1】:

您可以创建自己的图表并将其设置为导入操作的默认值:

import tensorflow as tf
graph1 = tf.Graph()
graph2 = tf.Graph()
with graph1.as_default():
    tf.import_graph_def(graph_def1) # graph_def1 loaded somewhere

with graph2.as_default():
    tf.import_graph_def(graph_def2) # graph_def2 loaded somewhere

session1 = tf.Session(graph=graph1)
session2 = tf.Session(graph=graph2)

【讨论】:

  • 如何从 pb 文件创建自己的图表?
猜你喜欢
  • 1970-01-01
  • 2013-04-25
  • 2019-10-20
  • 2015-01-08
  • 2012-03-02
  • 2017-09-16
  • 2020-09-27
  • 2012-07-22
  • 2016-04-01
相关资源
最近更新 更多