我们上一节介绍过简单的TensorFlow手写字符识别程序了,但是在实际中调参和观察flow的状态是很有必要的,于是TensorFlow便有了TensorBoard帮助我们进行可视化学习,这里同样按照官方教程的流程进行介绍。这里提供一个视频的教程
1、Visualizing Learning 可视化学习
TensorBoard是官方推出的一个可视化工具,方便在训练复杂度较高的神经网络时进行debug和优化,而且可以在web上直接应用。其可以展示的数据主要包括5类:标量、图像、声音、直方图和计算图(graph)。其大致的长这个样子:
其大致的实现流程如下:
1. 创建一个TensorFlow的graph用于summary data(汇总数据)
比如我现在有一个用于MNIST的识别CNN,我想知道学习速率的变化情况以及目标函数的变化情况,由于是标量所以我们就要给节点附加一个标量汇总(scalar_summary)来输出这些值用TensorBoard显示。再比如如果希望显示某一层中激活值或权重的分布,就可以通过直方图汇总(histogram_summary)来汇总,还有很多汇总的信息可以看一下这个文档
也就是说汇总也是一个节点
2. 汇总数据
得到汇总后的数据后,需要把这些汇总结果通过tf.summary.FileWriter写到硬盘里,这个函数包括两个重要参数:logdir(注明写入的地址)、还有就是可以传入一张graph(如果传入一张图,这样就可以生成一个tensor流动的示意图,这个后面会讲到),这里注意中文的TensorFlow教程已经有点老了,函数已经变了,这里用的最新的函数。
这里注意 TensorFlow中的Operation只有在你运行的时候或者有其他操作需要它的时候才会激活,但是汇总节点是围绕着graph展开的,任何节点都不会依赖于summary。也就是说如果我们想要得到汇总结果,我们需要手动的run这些节点,为了减少麻烦可以用tf.summary.merge_all来统一汇总(这个和初始化类似)。
3. 程序
为了更清楚的解释程序,特地写到了github里。
2、Graph Visualization
这部分的内容来自这里,主要介绍了如何利用刚刚生成的summary信息进行图的可视化分析。
首先需要打开我们刚刚保存的内容,方法为在cmd中使用tensorboard –logdir=D:\spring1617_assignment2\assignment2\tmp 命令(logdir中输入的是你自己的路径),然后在浏览器中输入localhost:6006即可。
其他的内容这里都有。
3、embedding Visualization
embedding是一个常用的映射方式,可以看成降维或是转换表示,我提供的代码也已经加入了TensorBoard的embedding部分,其实就是需要加入saver = tf.train.Saver()即可。tensorboard会自动的对模型中所有的二维的variable进行可视化。
ckedit