前提:假设你熟悉Python,TensorFlow和Jupyter notebooks。 我们的目标只是可视化计算图。
TensorFlow操作形成计算图。 而对于简单的例子,你可能可以查看代码,并立即看到发生了什么,较大的计算图可能不那么明显。 可视化图表可以帮助诊断计算本身的问题,也可以帮助了解TensorFlow中的某些操作是如何工作的以及事情如何组合在一起的。
让我们来看几种不同的可视化TensorFlow图形的例子,最重要的是,如何以一种非常简单和有效的方式来实现。
首先,让我们创建一个简单的TensorFlow图。 常规操作(如使用tf.placeholder)会在所谓的默认图形中创建一个节点。 我们可以通过tf.get_default_graph()访问它,但是我们也可以临时更改它。 在下面的示例中,我们将创建一个tf.Graph对象的新实例,并创建一个添加两个变量的例子。
c=a+b
变量g现在包含操作c = a + b的计算图的定义。 我们可以使用g.as_graph_def()方法获取表达式的图形的文本表示。 虽然这主要用于通过tf.import_graph_def进行序列化和随后的反序列化,但我们将使用它来创建一个 GraphViz DOT graph。
让我们来看看GraphDef的简单表达。 首先,我们查看图中所有节点的名称。
结果有三个节点。 一个是每一个变量,另一个用于添加操作。 占位符变量节点有一个名称,因为我们在调用tf.placeholder时明确命名它们。 如果我们省略了name关键字参数,TensorFlow将简单地生成一个名称,就像在add操作中一样。
接下来,我们可以看看图中的边。 每个GraphDef节点都有一个输入字段,指定具有边缘的节点。 让我们来看看:
我们可以看到,有两个边,每个变量一个。 我们可以直接将其直接提供给GraphViz。