tensorboard可视化详细
tensorboard可视化详细
2019-09-06
1.tensorboard可视化的用途
首要的目的是记录tensorflow的Graph,tensorflow的Graph其实就是具象化的算法模型;可以认为tensorflow用Graph来替代我们平时自己写的流程化的模型程序,具体区别就是我们自己写的程序需要自己进行流程化规范,而tensorflow的Graph设计好后,具体执行流程由tensorflow的Session控制,不需要我们人为去控制流程。
图的可视化效果可以参考:tensorflow图可视化
tensorboard还可以记录和查看模型的过程数据,例如迭代过程中的损失值,准确率,过程中的图片,学习速率等等过程数据;以前这些数据的可视化之前大多是由开发者自己在模型训练中记录数据然后使用matplotlib库图像化。
总的可以认为tensorboard可视化的用途:为了更方便 TensorFlow 程序的理解、调试与优化,发布了一套名为 TensorBoard 的可视化工具。您可以用 TensorBoard 来展现 TensorFlow 图,绘制图像生成的定量指标图以及显示附加数据(如其中传递的图像)。
2.tensorboard可视化的实现过程
tensorboard是一个用来画图的工具,但是自己不生产数据,它只是数据的搬运工。数据是来自于tensorflow模型的训练过程,所以可视化的过程按照时间顺序可以分为2个部分:
(1)使用tensorflow训练算法模型,生成tesorflow的Graph和过程数据,并保存到磁盘中的Events文件中去;
(2)使用tensorboard读取Graph和这些过程数据,并将它们绘制出来。
2.1 可视化过程图
具体的实现过程大致如下图所示:

2.2 如何生成Events文件
(1)创建tensorflow图;
tensorflow系统会自动维护一个默认的计算图,所以这里暂不用管;关于计算图管理可以参照该文章。
(2)在想要的节点下标注总结指令;例如记录标量:
loss = tf.reduce_mean(loss_list)
tf.summary.scalar("loss_value",loss)
(3)将所有的想要的节点信息通过tf.summary.merge_all()打包为一个节点,这里命名为summary__merge_op,随后创建一个写入器,为后续的写入磁盘创建接口;
summary_merge_op = tf.summary.merge_all()
writer = tf.summary.FileWriter("filedir",tf.get_default_graph())
其中“filedir”是保存Events文件的路径。
(4)在训练过程中运行打包后的节点,并获取序列化的节点信息;
sess = tf.Session()
summary_info = sess.run(summary_merge_op)
(5)将序列化的节点信息写入磁盘中的Events文件,这个操作通过写入器writer实现;
writer.add_summary(summary_info,step)
3.summary中常用对象和方法的详解
3.1 summary.op
常见的几个操作,scalar是用来记录标量信息,image用来记录图片信息,audio用来记录声音信息,histogram用来记录直方图,以前两个为例讲解。
(1)scalar
summary.scalar(
name,
tensor,
collections=None
family=None,
)
name:即你给此节点信息赋予的称呼,str类型,比如损失值可以为“loss_value”,准确率可以为“accuracy”等;无强制要求;
tensor:就是你需要记录的那个节点;用scalar记录的只能是标量(一个值的实数);
collections:图的集合键值的可选列表,新的求和op被添加到这个集合中,缺省为[GraphKeys.SUMMARIES];
family:可选项;设置时用作求和标签名称的前缀,这影响着TensorBoard所显示的标签名;
真正用时一般使用前两个变量即可。
a = tf.Variable(0,tf.int32,name="a")
tf.summary.scalar("parameter",a)
(2)image
tf.summary.image(
name,
tensor,
max_outputs=3,
collections=None,
family=None
)
name:同上
tensor:这里的tensor必须是一个4维的张量,维度分布是[batch_zize, height, width, channels],其中第四维度channels必须是1,3,或4中的一个;
max_output:图上显示的批次图片的最大个数;
3.2 summary.merge_all()
作用是将所有的summary.op操作打包为一个节点,在Session中执行一次打包后的节点操作即等同于将所有的summary.op执行一次;merge_all()会主动寻找所有的summary_op操作。
此操作必须放在所有的summary.op后面。
3.3 summary.FileWriter()
创建一个写入器,可以通过写入器将数据信息写入到磁盘的Events文件中去,
__init__(
logdir,
graph=None,
max_queue=10,
flush_secs=120,
graph_def=None,
filename_suffix=None,
session=None
)
logdir:Events文件存放路径,用str表示;
graph:计算图对象,比如sess.graph;
max_queen:int类型;缓存队列的大小;
flush_secs:周期,int类型;指的是写入器将缓存数据写入磁盘的周期;
graph_def:此值已经弃用,不用管
filename_suffix:
session:
平时工作中,一般仅用前两个参数
...create a graph...
# Launch the graph in a session.
sess = tf.Session()
# Create a summary writer, add the 'graph' to the event file.
writer = tf.summary.FileWriter(<some-directory>, sess.graph)
3.4 writer.add_summary()
writer对象有很多中方法,这里只介绍其中的add_summary方法。
add_summary(
summary,
global_step=None
)
summary:即执行记录操作后返回的序列化信息,例如summary_info;
global_step:迭代过程在事件上的标号,如果此参数不赋值,那么所有数据将会在一条直线上;
for epoch in range(epochs):
summary_info = sess.run(summary_merge_op)
writer.add(summary_info,epoch)
add_summary操作并不会将节点信息立马写入磁盘,它只是先将节点信息放入写入器对象的缓存中,最终由写入器统一写入磁盘。
4.启用tensorboard
打开终端cmd;找到存放Events文件的文件夹路径;输入
tensorboard --logdir="./log"
其中“./log”是我存放文件的路径,你需要指定到自己的路径上去。
如果前面的都没问题,那么会出现以下的内容:

将途中红圈框主的内容复制下来,然后在浏览器中打开即可:

5.简单的示例
import tensorflow as tf x = tf.compat.v1.Variable(-5.0,"float",name="x")
y = tf.multiply(x,x) #将节点信息加入summary
tf.summary.scalar("x_label",x)
tf.summary.scalar("pingfang",y) #合并summary.op
summary_merge_op = tf.summary.merge_all() #开始绘会话
with tf.Session() as sess:
init = tf.global_variables_initializer()
#创建写入器
writer = tf.summary.FileWriter("./log",sess.graph)
#变量初始化
sess.run(init) for epoch in range(11):
summary_info = sess.run(summary_merge_op)
writer.add_summary(summary_info,epoch) #给变量x加1
temp = sess.run(tf.add(x,1.0))
sess.run(tf.assign(x,temp))
tensorboard可视化详细的更多相关文章
- Tensorflow学习笔记3:TensorBoard可视化学习
TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, Tenso ...
- 使用 TensorBoard 可视化模型、数据和训练
使用 TensorBoard 可视化模型.数据和训练 在 60 Minutes Blitz 中,我们展示了如何加载数据,并把数据送到我们继承 nn.Module 类的模型,在训练数据上训练模型,并在测 ...
- 学习TensorFlow,TensorBoard可视化网络结构和参数
在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可 ...
- tensorboard可视化节点却没有显示图像的解决方法---注意路径问题加中文文件名
问题:完成graph中的算子,并执行tf.Session后,用tensorboard可视化节点时,没有显示图像 1. tensorboard 1.10 我是将log文件存储在E盘下面的,所以直接在E盘 ...
- 在Keras中使用tensorboard可视化acc等曲线
1.使用tensorboard可视化ACC,loss等曲线 keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq= 0 , wri ...
- 超简单tensorflow入门优化程序&&tensorboard可视化
程序1 任务描述: x = 3.0, y = 100.0, 运算公式 x×W+b = y,求 W和b的最优解. 使用tensorflow编程实现: #-*- coding: utf-8 -*-) im ...
- 使用TensorBoard可视化工具
title: 使用TensorBoard可视化工具 date: 2018-04-01 13:04:00 categories: deep learning tags: TensorFlow Tenso ...
- 利用tensorboard可视化checkpoint模型文件参数分布
写在前面: 上周微调一个文本检测模型seglink,将特征提取层进行冻结,只训练分类回归层,然而查看tensorboard发现里面有histogram显示模型各个参数分布,看了目前这个训练模型参数分布 ...
- 【猫狗数据集】利用tensorboard可视化训练和测试过程
数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...
- TensorBoard:可视化学习
数据序列化 TensorBoard 通过读取 TensorFlow 的事件文件来运行.TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据.下面是 TensorB ...
随机推荐
- 裁员潮下,我月薪3W依旧坚挺
近几年来产品经理一直是求职市场中的香饽饽: 年薪20w起.没有专业限制.职业天花板高,甚至行业中一直流传着一句话:产品经理是CEO的学前班. 在各种光环的加持下,不少应届生或有转行打算的职场人都将目光 ...
- Centos安装后出现please make your choice from '1' to eter the license information spoke | 'q' to quit |'c' to continue |'r' to refresh
这是要求用户阅读或者接收协议: 解决方法:输入"1",按Enter键 阅读许可协议,输入"2",按Enter键 接受许可协议,输入"q" ...
- R语言3D图导出矢量图有bug
谁不喜欢高清无码?rgl.snapshot就是个渣渣 首先,用rgl画3D图并调整好视角,代码如下: z <- 2 * volcano # Exaggerate the reliefx < ...
- js时间戳转换
第一个参数传时间戳,第二个连接符可以看你的心情,我喜欢'-' formatDate(value, spe = '/') { value = value * 1000 //10位数时间戳要乘1000 1 ...
- python中的import、from import以及import as的区别
import import是python提供的用于导入模块的机制,导入的是整个模块的内容.模块可以是py.pyc.pyd,可以是系统自带的,也可以是自定义的. 使用语法:import os pytho ...
- laravel qq第三方登录
QQ互联官网 首先申请成为开发者获取到后面需要的 client_id redirect_uri client_secret 文档资料/SDK及资源下载/SDK下载/PHP SDK 下载下来修改文件修改 ...
- warmup --攻防世界
题目: (1)有一张图片和一个压缩包 发现压缩包里面有一张相同的图片,应该是已知明文攻击(相同的CRC) (2)使用软件爆破 虽然没能得到密码,手动中断后得到新的压缩包,发现里面的图片已经解密. (3 ...
- RMAN架构
关于 RMAN 环境 Recovery Manager 环境由在备份和恢复策略中发挥作用的各种应用程序和数据库组成. RMAN 环境的组件 组件 描述 RMAN 客户端 管理目标数据库的备份和恢复操作 ...
- Taro3 扫描不同二维码参数不同,但是热启动之后参数不变 根据环境不同更换域名
热启动:先执行缓存的静态数据,然后再执行页面代码.比如右上角退出或者按home键错误用法:用的Taro3 react function函数,之前用的 Taro.getLaunchOptionsSyn ...
- win10任务栏图标设置“不合并标签但隐藏文字”
设置如图不分组即可,下载链接 https://files-cdn.cnblogs.com/files/slyuan/7tt_setup.rar