【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard

Graph

在前面的文章中,我们学会了如何在TensorFlow(TF)中创建Tensor,Variable和Operation来组成一个graph,以及如何利用Session运行一个graph。但是这个graph对象究竟是在什么时候创建的?我们能否同时创建多个graph呢?

要回答这个问题,我们首先要了解在默认的情况下,TF是如何创建graph的。TF在library加载以后,会自动创建一个Graph对象,并把它作为default graph,我们创建的操作会自动放在这个default graph里。我们也可以不使用TF自动创建的graph,而是创建自己的graph对象并设置为default,然后添加各种操作,例如:

【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第1张图片
code1.png

注意,如果打算运行自己创建的graph,一定要把它传递给 tf.Sessiongraph参数。

我们也可以自己创建多个Graph对象,将它设为default graph后,添加各种操作:


【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第2张图片
code2.png

name scopes and TensorBoard

到目前为止,我们学习了创建TF graph所需的所有原材料。前面的例子都很简单,一个graph中只有几个节点,然而在实际工作中,我们需要创建包含成百上千个节点的graph。如何有效的组织和查看graph就显得尤为重要。在TF中,我们可以通过name scope的方式来组织节点,并利用TensorBoard来可视化。

name scopes的作用就是把相关的操作组织在一起,形成一个大的block。在TensorBoard中查看graph的时候,会发现所有的节点都被封装在一个个block中。

我们先来利用name scope创建一个简单的graph,并保存在文件中:


【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第3张图片
code3.png

接着在终端中启动TensorBoard:

$ tensorboard --logdir='./name_scope_1'

打开浏览器,在地址栏中输入http://127.0.1.1:6006,点击GRAPH标签,就可以看到下面的结果:

【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第4张图片
tensorboard_1.png

此时我们只能看到两个box,分别代表的是我们定义的两个name scope,我们点击box右上角的+号,就可以展开box,看到里面的节点:
【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第5张图片
tensorboard_2.png

接下来我们创建一个更复杂一些的graph:
【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第6张图片
code4.png

在TensorBoard中我们可以清楚的看到:Transformation scope包含了4个scope,这4个scope又分成了2层(用不同的颜色表示),第一层的A和B把它们的output传给了第二层的C和D,然后C和D把它们的output传给了最后一个节点。
【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第7张图片
tensorboard_3.png

我们可以进一步查看4个scope内部的结构:
【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第8张图片
tensorboard_4.png

【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第9张图片
tensorboard_5.png

从这个例子可以看到,将复杂的网络分解成各个block和layer,可以让我们快速地理解网络的结构。

我们通过简单的例子学习了TensorFlow中的一些最基本的概念。这是我们看懂TF代码的前提条件,也是向构建复杂神经网络迈出的坚实一步。预知后事如何,且听下回分解!

参考文献

  1. Giancarlo Zaccone. Getting Started with TensorFlow, 2016
  2. Sam Abrahams et al. TensorFlow for Machine Intelligence: A Hands-On Introduction to Learning Algorithms, 2016
【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard_第10张图片
qrcode.jpg

你可能感兴趣的:(【深度学习-4】TensorFlow基础(三):Graph,name scopes, TensorBoard)