TensorBoard 简介及使用流程
来源:互联网 发布:ubuntu翻墙上google 编辑:程序博客网 时间:2024/06/14 02:48
仅供学习参考,转载地址:http://blog.csdn.net/mzpmzk/article/details/77914941
一、TensorBoard 简介及使用流程
1、TensoBoard 简介
TensorBoard 和 TensorFLow 程序跑在不同的进程中,TensorBoard 会自动读取最新的 TensorFlow 日志文件,并呈现当前 TensorFLow 程序运行的最新状态。
2、TensorBoard 使用流程
- 添加记录节点:
tf.summary.scalar/image/histogram()
等- 汇总记录节点:
merged = tf.summary.merge_all()
- 运行汇总节点:
summary = sess.run(merged)
,得到汇总结果- 日志书写器实例化:
summary_writer = tf.summary.FileWriter(logdir, graph=sess.graph)
,实例化的同时传入 graph 将当前计算图写入日志- 调用日志书写器实例对象
summary_writer
的add_summary(summary, global_step=i)
方法将所有汇总日志写入文件- 调用日志书写器实例对象
summary_writer
的close()
方法写入内存,否则它每隔120s写入一次
二、TensorFlow 可视化分类
1、计算图的可视化:add_graph()
- 1
- 2
- 3
- 4
- 5
- 6
2、监控指标的可视化:add_summary()
I、SCALAR
tf.summary.scalar(name, tensor, collections=None, family=None)
可视化训练过程中随着迭代次数准确率(val acc)、损失值(train/test loss)、学习率(learning rate)、每一层的权重和偏置的统计量(mean、std、max/min)等的变化曲线
输入参数:
- name:此操作节点的名字,TensorBoard 中绘制的图形的纵轴也将使用此名字
- tensor: 需要监控的变量 A real numeric Tensor containing a single value.
输出:
- A scalar Tensor of type string. Which contains a Summary protobuf.
II、IMAGE
tf.summary.image(name, tensor, max_outputs=3, collections=None, family=None)
可视化
当前轮
训练使用的训练/测试图片或者 feature maps输入参数:
- name:此操作节点的名字,TensorBoard 中绘制的图形的纵轴也将使用此名字
- tensor: A r A 4-D uint8 or float32 Tensor of shape
[batch_size, height, width, channels]
where channels is 1, 3, or 4- max_outputs:Max number of batch elements to generate images for
输出:
- A scalar Tensor of type string. Which contains a Summary protobuf.
III、HISTOGRAM
tf.summary.histogram(name, values, collections=None, family=None)
可视化张量的取值分布
输入参数:
- name:此操作节点的名字,TensorBoard 中绘制的图形的纵轴也将使用此名字
- tensor: A real numeric Tensor. Any shape. Values to use to build the histogram
输出:
- A scalar Tensor of type string. Which contains a Summary protobuf.
IV、MERGE_ALL
tf.summary.merge_all(key=tf.GraphKeys.SUMMARIES)
- Merges all summaries collected in the default graph
- 因为程序中定义的写日志操作比较多,一一调用非常麻烦,所以TensoorFlow 提供了此函数来整理所有的日志生成操作,eg:
merged = tf.summary.merge_all ()
- 此操作不会立即执行,所以,需要明确的运行这个操作(
summary = sess.run(merged)
)来得到汇总结果- 最后调用日志书写器实例对象的
add_summary(summary, global_step=i)
方法将所有汇总日志写入文件
3、多个事件(event)的可视化:add_event()
- 如果 logdir 目录的子目录中包含另一次运行时的数据(多个 event),那么 TensorBoard 会展示所有运行的数据(主要是scalar),这样可以用于比较不同参数下模型的效果,调节模型的参数,让其达到最好的效果!
- 上面那条线是迭代200次的loss曲线图,下面那条是迭代400次的曲线图,程序见最后。
三、通过命名空间美化计算图
- 使用命名空间使可视化效果图更有层次性,使得神经网络的整体结构不会被过多的细节所淹没
- 同一个命名空间下的所有节点会被缩略成一个节点,只有顶层命名空间中的节点才会被显示在 TensorBoard 可视化效果图上
- 可通过
tf.name_scope()
或者tf.variable_scope()
来实现,具体见最后的程序。
四、将所有日志写入到文件:tf.summary.FileWriter()
tf.summary.FileWriter(logdir, graph=None, flush_secs=120, max_queue=10)
- 负责将事件日志(graph、scalar/image/histogram、event)写入到指定的文件中
初始化参数:
- logdir:事件写入的目录
- graph:如果在初始化的时候传入
sess,graph
的话,相当于调用add_graph()
方法,用于计算图的可视化- flush_sec:How often, in seconds, to flush the
added summaries and events
to disk.- max_queue:Maximum number of
summaries or events
pending to be written to disk before one of the ‘add’ calls block.其它常用方法:
add_event(event)
:Adds an event to the event fileadd_graph(graph, global_step=None)
:Adds a Graph to the event file,Most users pass a graph in the constructor insteadadd_summary(summary, global_step=None)
:Adds a Summary protocol buffer to the event file,一定注意要传入 global_stepclose()
:Flushes the event file to disk and close the fileflush()
:Flushes the event file to diskadd_meta_graph(meta_graph_def,global_step=None)
add_run_metadata(run_metadata, tag, global_step=None)
五、启动 TensorBoard 展示所有日志图表
1. 通过 Windows 下的 cmd 启动
- 运行你的程序,在指定目录下(
logs
)生成event
文件 - 在
logs
所在目录,按住shift
键,点击右键选择在此处打开cmd
- 在
cmd
中,输入以下命令启动tensorboard --logdir=logs
,注意:logs的目录并不需要加引号, logs 中有多个event 时,会生成scalar 的对比图,但 graph 只会展示最新的结果 - 把下面生成的网址(
http://DESKTOP-S2Q1MOS:6006 # 每个人的可能不一样
) copy 到浏览器中打开即可
2. 通过 Ubuntu下的 bash 启动
- 运行你的程序(
python my_program.py
),在指定目录下(logs
)生成event
文件 - 在
bash
中,输入以下命令启动tensorboard --logdir=logs --port=8888
,注意:logs的目录并不需要加引号,端口号必须是事先在路由器中配置好的 - 把下面生成的网址(
http://ubuntu16:8888 # 把ubuntu16 换成服务器的外部ip地址即可
) copy 到本地浏览器中打开即可
六、使用 TF 实现一元线性回归(并使用 TensorBoard 可视化)
- 多个event的
loss
对比图以及网络结构图(graph
)已经在上面展示了,这里就不重复了。- 最下面展示了网络的训练过程以及最终拟合效果图
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
阅读全文
0 0
- TensorBoard 简介及使用流程
- Android Accessibility使用及事件流程简介
- Android Accessibility使用及事件流程简介
- Glide使用简介及流程分析
- windows平台tensorboard的配置及使用
- TensorBoard使用
- TensorBoard使用
- TensorBoard使用
- 使用TensorBoard
- TensorBoard使用
- oracle owb介绍系列一之简介及使用流程
- 使用git(一)git简介及基本工作流程
- Win10下tensorflow的安装及tensorboard的使用
- SpringMVC简介及搭建流程
- tensorboard的使用
- tensorboard 使用报错
- tensorboard使用1
- Tensorboard简单使用
- 2017.11.22笔记
- 【Scikit-Learn 中文文档】交叉分解
- 13. Roman to Integer
- Can't create cache file
- 外汇品牌B&G GLOBAL MARKETS强势入驻中国 瞬间成为同行话题热点
- TensorBoard 简介及使用流程
- 两个栈实现队列(经典面试题)java
- 泛型约束(值类型和引用类型)
- 【教程】FileAudit入门的基本要求
- 有关Android平台的jni 和 .mk文件
- 如何读懂awr
- 欢迎使用CSDN-markdown编辑器
- Java爬虫那些事---下载分析
- 磁盘分区,文件在磁盘上的存储