tensorboard使用案例

作者: TsundNLP | 来源:发表于2017-11-25 11:37 被阅读0次

最近在写tensorflow的程序,想看看训练过程中损失函数等变化,打算用用tensorboard。

tensorboard是tensorflow的可视化工具,可以显示图、展示中间结果。

相关链接:https://tensorflow.google.cn/get_started/summaries_and_tensorboard

代码如下:

Jupyter代码截图

tensorboard是tensorflow默认自带的模块,专门用来结果可视化。主要用的就是tf.summary。

1.定义:

这个模块我们主要使用的就是tf.sumary.histogram和tf.summary.scalar。这两个类在代码里类似tf的变量、占位符等,都在图中定义。

tf.sumary.histogram:直方图,只要展示tensor的分布,并不能表示tensor的值。

主要参数如下,

    tf.sumary.histogram(name, values, collections=None, family=None):

    name: string,表示在tensorboard显示的名称

    values: tensor,一般是多维tensor

    collections: 表示将这个类加入到哪个集合中。

    family: 类似命名前缀。一般只要你在定义图的时候进行了命名空间定义,如name_scope、variable_scope,就不需要这family了。

    展示一下我测试时的结果(大家看个样子就行了,不要在意结果是什么样子)

histogram

tf.summary.scalar:标量,只能展示一个实数值,也就是一般用来显示准确度、损失等,而不能用来展示训练好的权重矩阵或者向量。

参数和直方图类似,只是values/tensor必须满足是单值实数。

依旧秀一张丑图:

多条线是因为我跑了很多次。

scalar

2.Writer

    writer = tf.summary.FileWriter('./graph',sess.graph)

    这是一个用来保存图的类,因为如果上一步,你什么要看的(直方图、标量)都没有,也是可以展示你的图的。

单纯展示定义的图

    偷懒了,直接上源码的解释,logdir 存储地址,graph 就是定义的图

def__init__(self,logdir,graph=None,max_queue=10

                    ,flush_secs=120,graph_def=None,filename_suffix=None):    

    Args:

        logdir: A string. Directory where event file will be written.

        graph: A `Graph` object, such as `sess.graph`.

        max_queue: Integer. Size of the queue for pending events and summaries.

        flush_secs: Number. How often, in seconds, to flush the

        pending events and summaries to disk.

        graph_def: DEPRECATED: Use the `graph` argument instead.

        filename_suffix: A string. Every event file's name is suffixed with

        `suffix`.

3.打包

    merged = tf.summary.merge_all()

    这里就更加不求甚解了,直接把前面第一步定义的summary节点,打包,便于下面run。这里就不展示参数什么的了。

4.run

    eval_c,eval_summary = sess.run([c,merged])

5.写入writer

    writer.add_summary(eval_summary,i)

    后面的i就是绘制图的时间(step)轴,如果没有后面的参数,只会写最后一个。

    程序的最后记得writer.close()

6.展示

    跑完之后,要展示需要在命令行运行 tensorboard  --logdir="./graph"

    接着用浏览器登入http://127.0.0.1:6006/ 就能看结果,但是一定要关掉VPN的全局模式,我就因为这个迷茫了半天,不知道自己错在哪里。

相关文章

网友评论

    本文标题:tensorboard使用案例

    本文链接:https://www.haomeiwen.com/subject/qemfbxtx.html