一、TensorBoard简介
训练神经网络十分复杂,有时需要几天甚至几周的时间。为了更好地管理、调试和优化神经网络的训练过程, TensorFlow 提供了 一个可视化工具 TensorBoard 。 TensorBoard 可以有效地展示 TensorFlow 在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的图像等信息。
TensorBoard 是 TensorFlow 的可视化工具 ,它可以通过 TensorFlow 程序运行过程中输出的日志文件可视化 TensorFlow 程序的运行状态。 TensorBoard 和 TensorFlow 程序跑在不同的进程中,TensorBoard 会自动读取最新的 TensorFlow 日志文件,并呈现当前 TensorFlow程序运行的最新状态。
TensorBoard 不需要额外的安装过程,TensorFlow 安装完成时, TensorBoard 会自动安装 。
二、TensorBoard可视化网络结构
下面的是从一个非常简单的神经网络里截取的一部分:
# 命名空间
with tf.name_scope('input'):
# 定义两个占位符
x = tf.placeholder(tf.float32,[None,784],name='x-input')
y = tf.placeholder(tf.float32,[None,10],name='y-input')
..........
writer = tf.summary.FileWriter('logs/',tf.get_default_graph()) #在当前文件夹里新建logs文件夹(如果没有logs文件夹),并把图存入)
............
接着运行这个完整的神经网络程序,等程序运行结束,在当前文件夹里会出现一个文件夹logs,并且在该文件夹中有一个文件,该文件就是tensorboard的文件。
我们需要运行这个文件才可以看到可视化的内容。
首先,打开命令行(cmd),需要改变路径至该文件所在的盘符,否则会执行失败。然后运行:
tensorboard --logdir=I:\pycharm-project\DL_code\TensorFlow-learn\logs
后面是该文件的路径。接着回车运行,会看到返回一个网址:
将该网址复制进浏览器打开(推荐Google浏览器)即可。
打开后是这样的:
在界面的上方,展示的内容是“ GRAPHS ”,表示图中可视化的内容是 TensorFlow 的计算图 。打开 TensorBoard 界面会默认进入 GRAPHS 界面,在该界面中可以看到上面程序 TensorFlow 计算图的可视化结果。点开 “ INACTIVE "选项可以看到 TensorBoard 能够可视化的其他内容 ,“INACTIVE”选项中列出的是当前没有可视化数据的项目 。,除了可视化 TensorFlow计算图之外,TensorBoard 还提供了 SCALARS 、 IMAGES 、 AUDIO 、 DIST阳BUTIONS 、HISTOGRAMS 、 PROJECTOR 、 TEXT 和 PROFILE 项目 。
TensorFlow 会将所有的计算以图的形式组织起来。TensorBoard 可视化得到的图不仅是将TensorFlow计算图中的节点和边直接可视化,它会根据每个 TensorFlow 计算节点的命名空间来整理可视化得到的效果图,使得神经网络的整体结构不会被过多的细节所淹没。除了显示 TensorFlow计算图的结构, TensorBoard 还可以展示 TensorFlow 计算节点上的其他信息。
节点的排列可能会比较乱,这导致主要的计算节点可能被埋没在大量信息量不大的节点中,使得可视化得到的效果图很难理解 。为了更好地组织可视化效果图中的计算节点, TensorBoard 支持通过 TensorFlow 命名空间来整理可视化效果图上的节点 。在 TensorBoard 的默认视图中, TensorFlow 计算图中同一个命名空间下的所有节点会被缩略成一个节点,只有顶层命名空间中的节点才会被显示在 TensorBoard 可视化效果图上。
除了 tf.name_scope 函数, tf.variable_scope 函数也提供了命名 空间管理的功能。这两个函数在大部分情况下是等价的 ,唯一的区别是在使用 tf.get_variable 函数时。
在可视化图中:
长方体为命名空间;椭圆为op,圆为常量,虚边表达了计算之间的依赖关系,实边为数据流动。
点击命名空间,然后右键可以选择从图中移出或者是添加进图中: