《TensorFlow技术解析与实战》——3.2 TensorBoard[2]

本节书摘来异步社区《TensorFlow技术解析与实战》一书中的第3章,第3.2节,作者:李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.2 TensorBoard[2]

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所示。

《TensorFlow技术解析与实战》——3.2 TensorBoard[2]

从图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次)。    
<div style="text-align: center"><img src="https://yqfile.alicdn.com/20aaa99955db74ddb51dbc57fb0c3c79db2cab12.png" width="" height="">
</div>

SCALARS面板中还绘制了每一层的偏置(biases)和权重(weights)的变化曲线,包括每次迭代中的最大值、最小值、平均值和标准差,如图3-15所示。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/e8a287f720421a89f1aa5183aa3221352b96e456.png" width="" height="">
</div>

####3.2.2 IMAGES面板
图3-16展示了训练数据集和测试数据集经过预处理后图片的样子。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/c899d7623fc9d6764a0b3e7448005179d5c4b300.png" width="" height="">
</div>

####3.2.3 AUDIO面板
AUDIO面板是展示训练过程中处理的音频数据。这里暂时没有找到合适的例子,读者了解即可。

####3.2.4 GRAPHS面板
GRAPHS面板是对理解神经网络结构最有帮助的一个面板,它直观地展示了数据流图。图 3-17 所示界面中节点之间的连线即为数据流,连线越粗,说明在两个节点之间流动的张量(tensor)越多。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/25c6e37ea5dd7c05c5917464e2812e8c9191851a.png" width="" height="">
</div>

在GRAPHS面板的左侧,可以选择迭代步骤。可以用不同Color(颜色)来表示不同的Structure(整个数据流图的结构),或者用不同Color来表示不同Device(设备)。例如,当使用多个GPU时,各个节点分别使用的GPU不同。

当我们选择特定的某次迭代(如第899次)时,可以显示出各个节点的Compute time(计算时间)以及Memory(内存消耗),如图3-18所示。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/3aaabf21ee6450383fccb33cb379ed0644795abd.png" width="" height="">
</div>

####3.2.5 DISTRIBUTIONS面板
DISTRIBUTIONS面板和接下来要讲的HISTOGRAMS面板类似,只不过是用平面来表示来自特定层的激活前后、权重和偏置的分布。图3-19展示的是激活之前和激活之后的数据分布。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/e99211f6fc980b8b5db8f002b7f316befa4d1e80.png" width="" height="">
</div>

###3.2.6 HISTOGRAMS面板
HISTOGRAMS主要是立体地展现来自特定层的激活前后、权重和偏置的分布。图3-20展示的是激活之前和激活之后的数据分布。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/20d6f843de341a957c9b51939bae77f60b2fa2a3.png" width="" height="">
</div>

####3.2.7 EMBEDDINGS面板
上一篇:ios系统能力&api转载链接汇总


下一篇:入驻