
2.5 TensorBoard可视化
TensorBoard是TensorFlow自带的一个强大的可视化工具。在TensorFlow的代码实现中,只要将所需保存的数据放置到summary operations中,并运行所有的summary节点,最后将输出的数据都保存到本地磁盘中,就可以使用TensorBoard进行可视化查看。详细的实现过程将在后续章节中讲解。
2.4节讲解了TensorBoard的启动,本节将详细讲解TensorBoard的可视化功能。TensorBoard中自带了8种可视化:SCALARS、GRAPHS、IMAGES、AUDIO、DISTRIBUTIONS、HISTOGRAMS、PROJECTOR和TEXT。
□ SCALARS(标量)
展示训练过程中准备率、损失值、权重、偏差值等的变化情况。
□ GRAPHS(计算图)
展示训练过程中的计算数据流图,可以展示每个节点的计算关系以及各个设备上消耗的内存和时间等。
□ IMAGES(图片)
展示训练过程中记录的图片。
□ AUDIO(音频)
展示训练过程中的音频。
□ DISTRIBUTIONS(数据分布图)
展示训练过程中记录的数据的分布图。
□ HISTOGRAMS(直方图)
展示训练过程中记录的数据的直方图。
□ PROJECTOR(投影分布)
之前的版本为Embeddings。展示训练过程中数据的投影分布,用于在二维或三维空间对高维数据进行探索。
□ TEXT(文本)
新增加的功能,显示保存的一小段文本。
2.5.1 SCALARS面板
打开TensorBoard时默认直接进入SCALARS面板,并且默认使用.*正则表达式显示所有图像。在面板的顶部导航栏中只展示能够可视化展示的模块,其他模块则会收起到INACTIVE中,如图2.9所示。

图2.9 SCALARS面板
SCALARS面板的左边有对应的处理选项。
□ Show data download links:显示数据的下载链接。可以把TensorBoard绘图用的数据下载下来,单击后在图的右下角可以看到下载链接,下载格式支持CSV和JSON。
□ Ignore outliers in chart scaling:是否排除异常点,默认为选中状态。
□ Tooltip sorting method:用于显示每个run对应点的值的显示顺序,有default、descending(降序)、ascending(升序)和nearest四个选项。
□ Smoothing:绘图时曲线的平滑程度,0表示不平滑处理,1表示最平滑,默认值是0.6。一般采用默认值。如果不进行平滑处理,有些曲线波动很大,难以看出趋势。
□ Horizontal Axis:绘图时横轴的设置,有STEP、RELATIVE和WALL三种设置。其中STEP是默认选项,指横轴显示的是训练迭代次数;RELATIVE指相对时间,相对于训练开始的时间,也就是训练用时;WALL指训练的绝对时间。
□ Runs:列出记录的不同run,可以选择只显示某个或某几个。
SCALARS面板中右边的绘图显示了各个单个值的变化趋势。每张图的左下角都有三个小图标:第一个表示查看大图,第二个表示是否对y轴对数化,第三个表示如果拖动或缩放坐标轴,就会重新回到原始位置。如果图中的某一段需要放大查看,可以用鼠标框选以进行放大处理。
2.5.2 GRAPHS面板
GRAPHS面板是理解模型逻辑最常用的面板。在机器学习的神经网络模型很复杂且包含很多层时,该面板能展示出你所构建的网络整体结构,显示数据流的方向和大小,也可以显示训练时每个节点的用时、耗费的内存大小以及参数,如图2.10所示。

图2.10 GRAPHS面板
GRAPHS面板分为左侧功能区和右侧显示图区。
其中,左侧功能区中对应的处理选项如下。
□ Fit to screen:将图缩放直至适合屏幕。
□ Download PNG:将图保存到本地。
□ Run:显示不同训练过程的结果。
□ Session runs:显示不同迭代步数时的结果。
□ Color:对数据流图进行不同方式的着色。Structure为默认方式,指对整个数据流图的结构着色;Device指训练过程中使用不同设备进行着色;Compute time指显示节点的计算时间;Memory指显示节点的内存消耗。
□ Graph:针对右侧显示图区中各类图示的说明。
右侧显示图区是我们分析的重点,默认显示的图分为两部分:主图(Main Graph)和辅助节点(Auxiliary Node)。其中,主图显示的是网络结构,辅助节点显示的是初始化、训练和保存节点等。
对于图中的节点,可以平移、缩放、拖动、自动平移到节点位置。单击节点后,会在右上角的卡片中显示详情,包括节点的输入、输出和参数等,如图2.11所示。双击某个节点或者单击节点右上角的+可以展开查看其中的情况,也可以对齐进行缩放。

图2.11 conv2d界面
图中节点之间的连线表示节点之间的依赖关系,分为两种链接方式:第一种是数据依赖(data dependency),在图中使用实心箭头(solid arrow)表示两个张量直接的操作,连线越粗,说明两个节点之间流动的张量越多;另一种是控制依赖(control dependency),在图中使用点线箭头(dotted line)表示。
2.5.3 IMAGES面板
IMAGES面板展示的是训练数据集和测试数据集经过预处理后图片的样子,如图2.12所示。

图2.12 IMAGES面板
2.5.4 AUDIO面板
AUDIO面板展示的是训练数据集和测试数据集经过预处理后的音频数据。
2.5.5 DISTRIBUTIONS面板
DISTRIBUTIONS面板用平面方式表示特定层在激活前后、权重和偏置的数据分布,如图2.13所示。

图2.13 DISTRIBUTIONS面板
2.5.6 HISTOGRAMS面板
HISTOGRAMS面板用立体的方式表示特定层在激活函数前后、权重和偏置的数据分布,如图2.14所示。

图2.14 HISTOGRAMS面板
2.5.7 PROJECTOR面板
PROJECTOR面板表示数据的投影分布,用于在二维或三维空间对高维数据进行探索,如图2.15所示。

图2.15 PROJECTOR面板
该面板分为左侧、中间、右侧三部分,其中左侧是功能区、中间为显示区、右侧为数据筛选区。该面板左侧的对应处理选项如下。
□ 选择降维方式:有T-SNE、PCA和CUSTOM三种降维方式。
□ 图像显示方式:可以在二维和三维间切换。
□ Perplexity:困惑度。手动调整相关参数,比较不同的概率分布或概率模型。
□ Learning rate:学习率。手动调整相关参数,分析学习过程。
在该面板的右侧可以采用正则表达式来匹配相关数据,直观地查看各个数据之间的距离关系。