上一节完成了简单神经网络的数据流图定义和运行。当神经网络越来越复杂时,如深度神经网络,对于大部分人而言,理解其内部的组织、结构及训练过程是很大的挑战。因此,有必要对数据流图进行可视化,这就要用到TensorBoard(图2-3)。TensorBoard是TensorFlow内置的一个可视化工具,它通过将TensorFlow程序输出的日志文件信息可视化,使用户对TensorFlow程序的理解、调试和优化更加简单高效。
TensorBoard的启动过程可以概括为以下几步。
(1)创建writer,写日志文件。
(2)运行可视化命令,启动服务。
(3)通过浏览器打开可视化界面。
图2-3 TensorBoard
接下来使用TensorBoard对上节中的简单神经网络数据流图进行可视化呈现,使读者熟悉TensorBoard的使用流程。对于数据流图中的每一步操作,都可以使用TensorBoard进行可视化。首先在上节案例代码的后面添加如下代码并重新运行。
在这行代码中,tf.summary.FileWriter()方法会将数据流图的描述sess.graph写到当前项目路径下的my_graph文件夹中(图2-4)。
图2-4 my_graph文件夹
添加代码并运行完程序后,在PyCharm界面中单击“Terminal”标签,在当前项目路径后面输入如下命令,如图2-5所示。
回车后会出现图2-6所示的提示。按提示打开相应的网址,启动TensorBoard,如图2-7所示。
图2-5 输入启动命令
图2-6 系统提示在6006端口启动TensorBoard
图2-7 启动TensorBoard
上述命令也可替换成以下写法,但要注意复制命令时,有可能得到的是中文引号,这时会出现TensorBoard中Graph为空的情况。
在浏览器中启动TensorBoard后,可以看到界面中有多个标签页。图2-8显示了各个标签页的基本作用。
图2-8 各个标签页的基本作用
“GRAPHS”标签页如图2-9所示,它用于显示项目对应的可视化数据流图,可通过鼠标滚轮改变显示大小。这是最常用的标签页,可以显示神经网络的整体结构,以及张量的流动方向和操作。
在该标签页中单击某个节点,即可显示该节点的详细信息,如图2-10所示。
启动TensorBoard时默认打开“SCALARS”标签页,它主要用于记录准确率、损失和学习率等数据的变化趋势,需要事先在代码中用tf.summary.scalar()方法将相关信息记录到文件中。
图2-9 “GRAPHS”标签页
图2-10 节点详细信息
tf.summary.scalar(name, tensor)方法有以下两个参数。
(1)name:用节点的名称作为曲线图的名称。
(2)tensor:包含单个值的张量。
对于上节案例中的简单神经网络,由于没有在代码中计算准确率、损失等,所以在“SCALARS”标签页中看不到任何信息(图2-7)。
如果网络模型的输入是图像,则可在“IMAGES”标签页中查看相应的输入图像,默认显示最新的输入图像。
“DISTRIBUTIONS”标签页主要用来展示神经网络中各参数随迭代次数的变化情况。
“HISTOGRAMS”标签页和“DISTRIBUTIONS”标签页是对同一数据不同形式的展现。它用横轴表示权重值,用纵轴表示迭代次数。颜色越深表示时间越早,颜色越浅表示时间越晚(越接近训练结束)。