Tensorboard
https://blog.csdn.net/u010099080/article/details/77426577
http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/graph_viz.html
1.Web端的7个栏目
SCALARS : tf.summary.scalar()
记录诸如准确率accuracy、损失loss和学习率learning rate等单个值的变化趋势
IMAGES :图像信息
AUDIO :声音的信息
GRAPHS :展示构建的网络整体结构
DISTRIBUTIONS :展示网络中各参数随训练步数的增加的变化情况
HISTOGRAMS :也是展示网络中各参数的变化,和 DISTRIBUTIONS 是对同一数据不同方式的展现
EMBEDDINGS :展示的是嵌入向量
2.代码流程
TensorBoard 通过读取 TensorFlow 的事件文件来运行
- 使用summary定义各种图SCALAR、GRAPHS等
- 将所有summary合并
merge_summary = tf.summary.merge_all()
- 将合并后的summary放入磁盘文件
writer = tf.summary.FileWriter(dir,sess.graph)
- 每隔一定的训练间隔需要run使得各种summary真正的生成
train_summary = sess.run(merge_summary,feed_dict = {...})
- 并且将每隔一定的训练间隔将各种summary放入磁盘文件
writer.add_summary(train_summary,step)
PS :通过名称域把节点分组来得到可读性高的图表很关键 with tf.name_scope(' ') as scope:
3.web端查看生成的文件
- 在
writer = tf.summary.FileWriter("logs/", sess.graph)
目录下面找到生成的文件 - 打开终端,进入文件目录的上层文件夹
tensorboard --logdir=logs
- 执行命令之后会出现网址,将网址在浏览器中打开就可以看到定义的可视化信息
4.刷新 tensorboard 注意
- 同时运行 Jupyter 服务器和 TensorBoard 服务器,需对每个服务器使用不同的端口
- 更新tensorboard中的计算图,将内存中以前的数据,清理掉
去logs目录下把文件删除 jupyter–>kernel–>restart&run all
(restart 很重要,我估计是起到了清理数据的作用,我之前一直在,重新run,结果图越来越多)
把原来的cmd命令行窗口关闭,重新执行启动tensorboard命令
符号 | 意义 |
---|---|
High-level节点代表一个名称域,双击则展开一个高层节点。 | |
彼此之间不连接的有限个节点序列。 | |
彼此之间相连的有限个节点序列。 | |
一个单独的操作节点。 | |
一个常量结点。 | |
一个摘要节点。 | |
显示各操作间的数据流边。 | |
显示各操作间的控制依赖边。 | |
引用边,表示出度操作节点可以使入度tensor发生变化。 |
5.name_scope variable_scope
https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/5-12-scope/
(1) tf.name_scope()
生成变量 variable的两种方法:
tf.get_variable()
:不会被tf.name_scope()
当中的名字所影响
tf.Variable()
:若将变量的name
定义成一样,但实际上生成了新的变量,变量的名字是不一样的
(2) tf.variable_scope()
tf.get_variable()
:若将变量的name
定义成一样,会报错
tf.Variable()
:若将变量的name
定义成一样,但是Tensorflow 输出的变量名其实并不一样
(3) 重复利用变量
重复使用同样名字的变量:
tf.variable_scope()
+ tf.get_variable()
+ scope.reuse_variables()
(而且不会像 tf.Variable()
每次都会产生新的变量)
1 | with tf.variable_scope("a_variable_scope") as scope: |
重复使用同样名字的变量在RNN中比较常用