Tensorflow的Graph和GraphDef之间的区别

时间:2017-11-01 16:53:15

标签: tensorflow

我对张量流很新。我想了解Graph和GraphDef之间的概念差异。

此外,我应该运行从protobuf文件(.pb)加载的图表?

谢谢!

2 个答案:

答案 0 :(得分:26)

DECLARE @SQL NVARCHAR(MAX) ; SET @SQL = N'SELECT CAST(DATEADD(YEAR,DATEDIFF(YEAR, -1, CAST(@dateWithDots AS DATE) )-1, -1) AS DATE)' EXEC sys.sp_executesql @SQL, N'@dateWithDots NVARCHAR(10)', @dateWithDots Graph是tensorflw提出计算的核心概念。当您使用tensorflow时,首先创建自己的Computional Graph并将Computation Graph传递给tensorflow。怎么做?您可能知道,tensorflow支持许多前端编程语言,如Python,C ++,Java和Go,核心语言是C ++,其他语言如何将Graph转换为C ++?他们使用一个名为Graph的工具,它可以生成特定的语言存根,这是protobuf来自的地方。它是GraphDef的序列化版本。

  

我应该运行从protobuf文件(.pb)

加载的图形

您应该使用Graph*pb GraphDef向(默认)bind读取GraphDef文件,然后使用会话运行{ {1}}用于计算,例如following code

Graph

答案 1 :(得分:1)

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

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

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

  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="")
    ...