首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tensorflow图与GraphDef的区别

Tensorflow图与GraphDef的区别
EN

Stack Overflow用户
提问于 2017-11-02 00:53:15
回答 2查看 22.7K关注 0票数 30

我是tensorflow的新手。我想了解一下Graph和GraphDef在概念上的区别。

此外,我应该使用哪一个来运行从protobuf文件(.pb)加载的图形?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-18 17:38:57

GraphComputional Graph是tensorflow表示计算的核心概念。当您使用tensorflow时,您首先创建自己的Computation Graph并将Graph传递给tensorflow。如何做到这一点?您可能知道,tensorflow支持许多前端编程语言,如Python、C++、Java和Go,核心语言是C++;其他语言如何将Graph转换为C++?他们使用名为protobuf的工具,该工具可以生成特定的语言存根,这就是GraphDef的来源。它是Graph的序列化版本。

要运行从protobuf文件(.pb)加载的图形,我应该使用哪一个

您应该使用GraphDef读取*pb文件,并将GraphDef bind到(默认) Graph,然后使用会话运行Graph进行计算,就像following code一样

代码语言:javascript
运行
复制
import tensorflow as tf
from tensorflow.python.platform import gfile
with tf.Session() as sess:
    model_filename ='PATH_TO_PB.pb'
    with gfile.FastGFile(model_filename, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        g_in = tf.import_graph_def(graph_def)
LOGDIR='/logs/tests/1/'
train_writer = tf.summary.FileWriter(LOGDIR)
train_writer.add_graph(sess.graph)
票数 50
EN

Stack Overflow用户

发布于 2017-11-02 11:54:49

GraphDef是原型定义的here。这是图的序列化版本。您可以在任何TensorFlow前端(Python、R、C++、Java...)中打印、存储或恢复GraphDef。当将其存储到文件中时,通常文件名以.pb结尾,因此您应该对.pb文件使用GraphDef。

图是一个抽象的概念,对于不同的前端可以有不同的形式。对于Python,tf.Graph()将返回一个Python对象(code),其中包含GraphDef和许多实用程序。

对于python,您可以使用tf.import_graph_def加载GraphDef。下面是一个简单的代码示例:

代码语言:javascript
运行
复制
  with tf.gfile.GFile(graph_def_pb_file, "rb") as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
  with tf.Graph().as_default() as graph:
    tf.import_graph_def(graph_def, name="")
    ...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47059848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档