Tensorboard计算图可视化结果是怎么样的

AUDIO 选项卡的右侧是GRAPHS 选项卡,也就是展示计算图可视化效果的地方。我们选择 GRAPHS 选项卡作为重点介绍的对象,实际上它也正是整个 TensorBoard 的灵魂所在 。在 GRAPHS 选项卡中可以看到整个 Tensor Flow 计算图的结构,如下图所示。

Tensorboard计算图可视化结果是怎么样的
从上图可以看出,一些主要的部分己经用命名空间的名称表示出来,例如 layer_1 和 layer_y,以及 cross_entropy、 accuracy 和 train,这也正 是我们在程序中使用命名空间划分各部分的原因。通过命名空间手动调整计算图的可视化效果图是一种不错的做法,除此之外, TensorBoard 也会智 能调整计算图上的节点。例如,计算图中会有一些执行相同操作的节点,这会造成计算图中存在比较多的依赖关系,如果全部画在一张图上会使可 视化得到的效果图非常拥挤,于是 TensorBoard 将计算图分成了主图(Main Graph)和辅助图(Auxiliary Graph)两个部分来呈现。在上图中,左侧展示的是计算图的主图部分;右侧展示的是辅助图部分,辅助图部分包含 一些单独列出来的节点,从这些单独列出来的节点可以看到,layer_1 和 layer_y 和 train 都包含有 init 节点。我们先来关注网络的前向传播过程。

x-input节点代表训练神经网络需要输入的数据,这些输入数据会提供给第一个隐藏层 layer_1 以及 input_reshape (汇总图像数据的命名空间) , layer_1 处理之后的数据会传递到 layer_y, layer_y 的输出会传递到 cross_entropy 和 accuracy。cross_ entropy 和 accuracy 同时还接收了来自 y-input 节点的数据用于计算交叉熵损失和准确率。最后 cross_entropy节点的数据会提供给神经网络的优化过程,也就是图中位train 所代表的节点 。训练中 backward 的求解梯度和更新参数等操作是 TensorFlow自动创建的,在图 13-18 中从 train 到 layer 1 和 layer_y 也有两条边,这代表的就是 求解梯度和更新参数的过程。在图 13-18 中可以发现节点之间有两种不同的边。最多的一种边是通过 实线表示的,这种边描述的是不同节点间的数据传输。比如 layer_1 和 layer_y 之间的边表示了 layer_1 的输出将会作为 layer_y 的输入。有时一些 边上会有双向的箭头(当然在上图中不存在这样的边),这表示两个节点间的数据传递是双向的。计算图可视化后的边上还标注了张量的维度信息。下图展示了单击 节点右上角的“+”图标后放大的 layer_1 节点。从图中可以看出, weights 节点和 Wx_add_b 节点之间传输的张量的维度为 784x500。这说明了该层的单元数为 500,输入层单元的个数为 784。如果两个节点之间传输的张量的个数大于 1,则边上将只显示张量的个数(如 4 tensors 表示 4 个张量)。边的粗细表示的是两个节点之间传输的标量维度的总大小(包含标量汇总为张量时张量的个数),所以不能仅仅通过边的粗细来比较哪条边传输的标量个数更多。

Tensorboard计算图可视化结果是怎么样的
最后,当我们单击选中的节点为一个命名空间时, 信息框会展示这个命名空间内 所有计算节点的输入、输出以及依赖关系。虽然属性( Attriubtes)也会展示 在信息框中,但是属性栏下不会有任何内 容。当单击选中的节点为一个 Tensor Flow 程序的计算节点时,对应的信息框会显示更加详细的内容,就 连属性( Attriubtes)中的内容也被展示出来(属性栏下显示了选中的计算节 点是在什么设备上运行的,以及运行这个计算时传入的参数)。

关注小鲸融创,一起深度学习金融科技!
Tensorboard计算图可视化结果是怎么样的