Tensorboard
TensorFlow使用 TensorBoard 来提供计算图形的图形图像。这使得理解、调试和优化复杂的神经网络程序变得很方便。TensorBoard 也可以提供有关网络执行的量化指标。它读取 TensorFlow 事件文件,其中包含运行 TensorFlow 会话期间生成的摘要数据。
参考文章1
-
第一步是确定想要的 OP 摘要
需要什么量就在这个量初始化后面记录这个量
-
刻度图(记录张量)
可以在
tf.summary.scalar
OP 的帮助下得到需要的术语摘要。tf.summary.scalar(name, tensor)
有两个参数:name
:可以理解为图的标题。在GRAPHS
中则是该节点的名字tensor
:包含单个值的 tensor,说白了就是作图的时候要用的数据
举个栗子(记录loss):
loss = tf.reduce_mean(tf.pow(y_model - OUT, 2)) tf.summary.scalar('loss', loss) #创建刻度图
执行的结果(显示在tensorboard>SCALAR):
-
直方图(记录变量)
使用
tf.summary.histogram
可视化梯度、权重或特定层的输出分布。举个栗子(记录多元线性规划的输出):
y_model = tf.matmul(IN, w_tf) + b_tf tf.summary.histogram('output', y_model) #创建直方图
执行结果(显示在tensorboard>HISTOGRAM):
-
记录image与audio的方式:
tf.summary.audio(name, tensor, sample_rate, max_outputs=3)
tf.summary.image(name, tensor, max_outputs=3)
-
记录图的结构:
run_options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
运行节点
run_metadata=tf.RunMetadata()
运行节点需要保存的元图数据
_,loss_value,step=sess.run([train_op,loss,global_step],feed_dict={x:xs,y:ys}, options=run_options,run_metadata=run_metadata)
提供运行节点和需要保存的数据节点,然后在会话的运行中记录相关信息。
train_writer.add_run_metadata(run_metadata,’step%03d’ % i)
将第i步迭代的图结构保存下来
-
-
第二步生成的摘要需要用事件文件写入(创建写日志节点)
日志节点的创建一般在会话(tf.Session
)下,变量初始化后创建一个writer第一个参数为保存日志(summary)的路径,第二个参数是要保存的图.writer = tf.summary.Filewriter('summary_dir', sess.graph)
summary_dir
中存储的是tensorboard要运行的事件的绝对路径,路径千万要记住!是否能正常打开tensorboard大部分取决于这里。举个栗子:(注意:我自己的路径是E:\YanQiLake\DL\log)
writer = tf.summary.FileWriter('E:\YanQiLake\DL\log', sess.graph) #创建日志节点,在变量初始化之后
打开tensorboard:在终端运行:
tensorboard --logdir=E:\YanQiLake\DL\log
。得到网址,粘贴到谷歌浏览器中,就可以看到tensorboard了! -
第三步节点的融合
定义融合所有需要记录节点(记录张量、变量、image和audio的这些节点)的信息到这个节点。
-
融合
merged_summary_op = tf.summary.merge_all()
-
run
这个merged_summary_op节点将在会话下运行,只有run了以后,才真实地记录信息:
(TensorFlow中每一个OP要起作用必须要RUN!!!)
_,loss_value,step,summary=sess.run([train_op,loss,global_step,merged_summary_op],feed_dict={x:xs,y:ys})
-
记录
将需要记录步数i的信息放到summary中:
train_writer.add_summary(summary, i)
-
-
最后关闭日志记录器
writer.close()
-
遇到的问题
-
打开tensorboard遇到No dashboards are active for the current data set.
保存log的文件路径绝对不能有空格或汉字,并且等号两端不能留空格。
tensorboard --logdir = E:\YanQiLake\DL\log
这样写就错了! -
如果可以正常运行graph,但是无法显示scalar等,那就是上面步骤有漏掉的。
-
-
运行代码
以多元线性回归为例