Tensorboard使用简介
为了画Loss函数下降曲线,最近了解学习了一下Tensorboard。 —— [ TensorBoard:可视化学习 ]
TensorBoard 作为一款与Tensorflow配套的可视化工具,其目的是方便用户理解、调试与优化深度神经网络,其记录了训练过程的相关信息,并将其可视化表现。利用它,我们可以直观地感受网络参数的变化与分布,Loss值的下降,训练集与验证集Accuracy在模型更新过程中的变化,这无疑有利于我们加深对复杂神经网络的理解,并对冗余或不合理的设计进行优化与调整。
记录
- 标量Scalars
- 直方图Histograms
- 图片Images
- 音频Audio
- 计算图Graph
- 数据分布Distribution
- 嵌入向量Embeddings
保存标量:tf.summary.scalar('acc', self.acc)
保存直方图:tf.summary.histogram('logit_histogram', self.logits)
summary全部保存:self.summary = tf.summary.merge_all()
指定文件保存图:self.tb_writer = tf.summary.FileWriter(config.tbpath,self.sess.graph)
可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中
self.tb_writer.add_summary(summary, self.step)
if self.step % self.display_step == 0:
_, c, summary, logits = self.sess.run([self.optimizer, self.model.total_cost, self.model.summary, self.model.logits], feed_dict)
self.tb_writer.add_summary(summary, self.step)
logger.Log("Step: {} completed".format(self.step))
启动
打开终端,键入如下语句 (port默认是6006,亦可自行定义):
tensorboard --logdir=logs --port=6007
打开浏览器,进入http://127.0.0.1:6007(如果是服务器的话,对应为服务器实际IP),故可看到Tensorboard的启动界面,如下:
但是如上所示的这些曲线图,走势波动很大,在曲线上表现为拥有很多毛刺,具体原因是自身所用数据集为50W条数据,而batch_size设置为54,一个iteration测的是一个batch的loss与accuracy,因此结果起伏很大,受限于内存,因此不敢调大batchsize。
后面改变策略,每1000iteration测试一遍(验证集全过一遍网络,训练集取前5000过网络,算loss与accuracy,得到如下图: