在使用 TensorFlow训练大型深度学习神经网络时,中间的计算过程可能非常复杂。出于理解、调试和优化我们设计的网络的目的,模型训练过程中各种汇总数据都可以通过 TensorBoard 展示出来,包括标量(Scalars)、图片(images)、音频(Audio)、计算图(Graphs)、数据分布(Distributions)、直方图(Histograms)和嵌入向量(Embeddings)。TensorBoard 是 TensorFlow官方推出的可视化工具,并不需要额外的安装过程,在 TensorFlow 安装完成时, TensorBoard会自动被安装。其界面基于 Web,如下图所示。在TensorFlow 程序运行过程中可以输出汇总了各种类型数据的日志文件,可视化 TensorFlow 程序的运行状态就是使用TensorBoard 读取这些日志文件,解析数据并生成可视化的 Web 界面。这样我们就可以在浏览器中观察各种汇总的数据。以下代码展示了一个简单的 TensorFlow 程序,在这个程序中完成了TensorBoard 日志保存的功能。
FileWriter 就是一个用于写日志文件的类。TensorFlow 还在 summary.py文件中提供了很多和计算图数据汇总相关的函数,在下一节有关于这些函数的介绍。执行完程序后会在 logdir 代表的路径下产生一个日志文件,我们进入到 log s文件夹,文件以当前用户名作为后缀名。
TensorBoard 和 TensorFlow 程序运行在不同的进程中, TensorBoard 会自动读取最新的 TensorFlow 日志文件,并呈现当前 TensorFlow 程序运行的最新状态。在终端,通过以下命令打开 TensorBoard 并对 logdir 参数赋值保存日志文件的路径:
运行上面的命令会启动一个服务,这个服务的端口默认为 6006。命令成功运行的话,会像 import tensorflow 一样出现 5 条 successfully opendCUDA library 提示,并在最后给出一个打开服务端口6006的链接。通过浏览器打开http://127.0.0.1:6006(比较便捷的方法是用鼠标右击http链接,在弹出的快捷菜单中选择“打开链接”,之后系统会自动调用己安装的浏览器。如果安装有多个浏览器,而不想使用相同默认选择的浏览器,也可以复制这个链接到最倾向于使用的浏览器打开〉,随后在浏览器可以看到TensorBoard的初始界面。在 TensorBoard 初始界面的上方,有 6 个分栏( TensorFlow 版本不一样会导致该界面也略有不同, 0.9.0 版本的 TensorFlow 有 5 个分栏),分别是SCALARS(标量)、 IMAGES(图片)、 AUDIO(音频)、 GRAPHS(计算图)、 DISTRIBUTIONS(数据分布)、 HISTOGRAMS(直方图)和EMBEDDINGS (嵌入向量)。这里的每个选项卡都代表了一类信息的可视化结果。在下一节,将通过可视化 MNIST 手写字识别的案例来介绍每个选项卡的信息。打开的 TensorBoard 界面会默认进入 SCALARS 选项卡,如下图所示。因为上面的程序没有输出任何由SCALARS 可视化的信息,所以在该选项卡中没有显示任何内容(有时也会有所提示,比如 No scalar datawas found )。打开 GRAPHS 选项卡,可以看到上面程序 TensorFlow 计算图的可视化结果,如图。
需要查看某一节点(如 input2 和 random uniform)具体包含了哪些运算时,可以将光标移动到该节点,单击右上角的“+”图标。下图展示了input2 节点展开之后的详细信息和 random_uniform 节点展开之后的详细信息。选中展示了详细信息的节点会使得其外框变为红色,并在页面的右上角显示关于该节点的一些控制选项。当计算图被放大到无法在整个页面容下时,在右下角会显示计算图的“地图”信息。
关注小鲸融创,一起深度学习金融科技!