本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第3章,第3.2节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看
3.2 TensorBoard
TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件。TensorBoard目前支持7种可视化,即SCALARS、IMAGES、AUDIO、GRAPHS、DISTRIBUTIONS、HISTOGRAMS和EMBEDDINGS。这7种可视化的主要功能如下。
SCALARS:展示训练过程中的准确率、损失值、权重/偏置的变化情况。
IMAGES:展示训练过程中记录的图像。
AUDIO:展示训练过程中记录的音频。
GRAPHS:展示模型的数据流图,以及训练在各个设备上消耗的内存和时间。
DISTRIBUTIONS:展示训练过程中记录的数据的分布图。
HISTOGRAMS:展示训练过程中记录的数据的柱状图。
EMBEDDINGS:展示词向量(如Word2vec)后的投影分布。
TensorBoard通过运行一个本地服务器,来监听6006端口。在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的图像。在9.3节的MNIST示例中,会逐一讲解TensorBoard的图像绘制,让读者更好地了解训练的过程中发生了什么。本节我们就先看一下TensorBoard能够绘制出哪些东西。
TensorBoard的可视化界面如图3-13所示。

图3-13
从图3-13中可以看到,在标题处有上述几个可视化面板,下面通过一个示例,分别介绍这些可视化面板的功能。
这里,我们运行手写数字识别的入门例子,如下:
``
python tensorflow-1.1.0/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py``
然后,打开TensorBoard面板:
``
tensorboard –logdir=/tmp/mnist/logs/mnist_with_summaries``
这时,输出:
Starting TensorBoard 39 on port 6006
(You can navigate to http://192.168.0.101:6006)
我们就可以在浏览器中打开http://192.168.0.101:6006,查看面板的各项功能。
3.2.1 SCALARS面板
SCALARS面板的左边是一些选项,包括Split on undercores(用下划线分开显示)、Data downloadlinks(数据下载链接)、Smoothing(图像的曲线平滑程度)以及Horizontal Axis(水平轴)的表示,其中水平轴的表示分3种(STEP代表迭代次数,RELATIVE代表按照训练集和测试集的相对值,WALL代表按照时间),如图3-14左边所示。图3-14右边给出了准确率和交叉熵损失函数值的变化曲线(迭代次数是1000次)。

图3-14
SCALARS面板中还绘制了每一层的偏置(biases)和权重(weights)的变化曲线,包括每次迭代中的最大值、最小值、平均值和标准差,如图3-15所示。

图3-15
3.2.2 IMAGES面板
图3-16展示了训练数据集和测试数据集经过预处理后图片的样子。

图3-16
3.2.3 AUDIO面板
AUDIO面板是展示训练过程中处理的音频数据。这里暂时没有找到合适的例子,读者了解即可。
3.2.4 GRAPHS面板
GRAPHS面板是对理解神经网络结构最有帮助的一个面板,它直观地展示了数据流图。图 3-17 所示界面中节点之间的连线即为数据流,连线越粗,说明在两个节点之间流动的张量(tensor)越多。

图3-17
在GRAPHS面板的左侧,可以选择迭代步骤。可以用不同Color(颜色)来表示不同的Structure(整个数据流图的结构),或者用不同Color来表示不同Device(设备)。例如,当使用多个GPU时,各个节点分别使用的GPU不同。
当我们选择特定的某次迭代(如第899次)时,可以显示出各个节点的Compute time(计算时间)以及Memory(内存消耗),如图3-18所示。

图3-18
3.2.5 DISTRIBUTIONS面板
DISTRIBUTIONS面板和接下来要讲的HISTOGRAMS面板类似,只不过是用平面来表示来自特定层的激活前后、权重和偏置的分布。图3-19展示的是激活之前和激活之后的数据分布。

图3-19
3.2.6 HISTOGRAMS面板
HISTOGRAMS主要是立体地展现来自特定层的激活前后、权重和偏置的分布。图3-20展示的是激活之前和激活之后的数据分布。

图3-20
3.2.7 EMBEDDINGS面板
EMBEDDINGS面板在MNIST这个示例中无法展示,在3.3节中我们会用Word2vec例子来看一下这个面板的词嵌入投影仪。