tensorboard基础使用
github上的tensorboard项目:https://github.com/tensorflow/tensorboard/blob/master/README.md
目录
- 基础介绍
- 基本使用
- 几种图
- 实例源码
一、基本介绍
tensorboard:一个网页应用,可以方便观察TensorFlow的运行过程和网络结构等(过程可视化)
工作流程
- Summary Ops:从TensorFlow获取数据
Ops是指tf.matmul、tf.nn.relu等,也就是在TensorFlow图中的操作
执行过程中的张量包含序列化的原始缓存,它会被写到磁盘并传给TensorBoard。然后需要执行summary op,来恢复这些结果,实现对TensorBoard中的数据可视化
summary ops包括:tf.summary.scalar, tf.summary.image, tf.summary.audio, tf.summary.text, tf.summary.histogram
- tags:给数据一个名字
当进行summary op时,也可以给一个tag。这个tag是该op记录的数据的名字,作为一种标识
- Event Files和logDir:如何加载数据
summary.FileWriters从TensorFlow把summary 数据写到磁盘中特定的目录,也就是logDir。数据是以追加的方式写入,文件名中有"tfevents"。TensorBoard从一个完整的目录中读取数据,并组织成一次TensorFlow执行过程
说明
- 为什么不是从一个独立文件读取?
如果你用superviosr.py来跑模型,当TensorFlow崩溃,superviso将从一个checkpoint重新开始跑。因为重新开始,就会产生一个新的event 文件,然后TensorBoard就可以把这些不同的event文件组织成一个连续的历史
- 执行:比较模型的不同执行
比如对某个超参数做了调整,想要比较该超参数不同值的执行效果。希望可视化的时候,可以同时展示这两个效果
实现方法:给TensorBoard传一个参数logdir,它将递归查找,每次遇到一个子目录,就会把它当成一个新的执行。
例:下面有run1和run2两个结果
|
/some/path/mnist_experiments/ /some/path/mnist_experiments/run1/ /some/path/mnist_experiments/run1/events.out.tfevents.1456525581.name /some/path/mnist_experiments/run1/events.out.tfevents.1456525585.name /some/path/mnist_experiments/run2/ /some/path/mnist_experiments/run2/events.out.tfevents.1456525385.name /tensorboard --logdir /some/path/mnist_experiments |
二、基本操作
定一个writer(log位置),用来写summary结果:train_writer = tf.summary.FileWriter("./resource/logdir", sess.graph)- 对要统计的变量使用summary操作:比如 tf.summary.scalar("accuarcy_train", accuracy_train) 对精确度的统计,第一个参数是名字,第二个参数是变量名
- 把所有summary操作merge起来: merged = tf.summary.merge_all()
- 执行过程中fetch merged获得想要的变量值: summary, _ = sess.run([merged, train_step], feed_dict={x: batch_xs, y_: batch_ys})
- 把第i次迭代的结果summary添加到train_writer: train_writer.add_summary(summary, i)
- 关闭写 train_writer.close()
启动tensorboard
- windows:进入{path}/Anaconda/Scripts,执行 ./tensorboard.exe --logdir={path}/resource/logdir/
- ubuntu:进入{path}/Anaconda/envs/tensorflow/bin,执行 ./tensorboard --logdir={path}/resource/logdir/
根据提示,访问网页即可结果
三、几种图
Scalar Dashboard: tf.summary.scalar
将标量值随时间时间变化进行可视化,如losss或学习率

Histogram Dashboard: tf.summary.histogram
张量随时间变化的分布情况。每个图表是数据的临时切片,每个切片是特定一步的张量的柱状图。越早的时间步结果越靠后
overlay-step offset-step


Distribution Dashboard: tf.summary.histogram
tf.summary.histogram的另一种展示方式。每一行代表一个值随时间步的变化情况。最下面是最小的值,向上值不断增大。每一列代表一个时间步中值的取值范围

Image Dashboard:tf.summary.image
展示png图像,每一行对应不同的tag,每一列是一个执行。tf.summary.image("images", tf.reshape(input_images, [100, 28, 28, 1]))

Audio Dashboard:tf.summary.audio(没用过)
嵌入可播放的音频容器。每行对应不同的tag,每列是一次运行。总是嵌入最新的一次结果
Graph Explorer
对TensorFlow模型的可视化
Embedding Projector
展示高维度的数据。projector是从模型的checkpoint文件读取数据,也可以用其他metadata配置,比如词汇表或雪碧图
Text Dashboar(没用过)
四、实例源码
def tensorboard():
# None表示此张量的第一个维度可以是任何长度的
x = tf.placeholder("float", [None, 784])
y_ = tf.placeholder("float", [None, 10]) # 标签,正确结果 # 初始化两个参数
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
m = [1,2,3,4,5,6]
tf.summary.histogram("xx", b)
# softmax函数
y = tf.nn.softmax(tf.matmul(x, W) + b) # 执行结果 # 交叉熵,成本函数
# tf.reduce_sum 计算张量的所有元素的总和
cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) # 梯度下降法来优化成本函数
# 下行代码往计算图上添加一个新操作,其中包括计算梯度,计算每个参数的步长变化,并且计算出新的参数值
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) init = tf.initialize_all_variables()
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) prediction_train = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy_train = tf.reduce_mean(tf.cast(prediction_train, "float"))
tf.summary.scalar("accuarcy_train", accuracy_train) # 显示图像
batch_xs, batch_ys = mnist.train.next_batch(100)
tf.summary.image('images', tf.reshape(batch_xs, [100, 28, 28, 1])) # 用于tensorboard
merged = tf.summary.merge_all() with tf.Session() as sess:
sess.run(init)
train_writer = tf.summary.FileWriter("./resource/mnist_logs", sess.graph) # 循环遍历1000次训练模型
for i in range(1000):
# 每一步迭代加载100个训练样本,然后执行一次train_step,并通过feed_dict将x 和 y张量占位符用训练训练数据替代
summary, _ = sess.run([merged, train_step], feed_dict={x: batch_xs, y_: batch_ys}) if i % 10 == 0:
train_writer.add_summary(summary, i)
for index, d in enumerate(m):
m[index] -= 0.1
batch_xs, batch_ys = mnist.train.next_batch(100)
train_writer.close() correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
tensorboard基础使用的更多相关文章
- 基于Python玩转人工智能最火框架 TensorFlow应用实践✍✍✍
基于Python玩转人工智能最火框架 TensorFlow应用实践 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起 ...
- Python玩转人工智能最火框架 TensorFlow应用实践 学习 教程
随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起的框架投票中,2144 位参与者中有 1441 位都在使用 Tenso ...
- 第七节,TensorFlow编程基础案例-TensorBoard以及常用函数、共享变量、图操作(下)
这一节主要来介绍TesorFlow的可视化工具TensorBoard,以及TensorFlow基础类型定义.函数操作,后面又介绍到了共享变量和图操作. 一 TesnorBoard可视化操作 Tenso ...
- TensorFlow基础笔记(9) Tensorboard可视化显示以及查看pb meta模型文件的方法
参考: http://blog.csdn.net/l18930738887/article/details/55000008 http://www.jianshu.com/p/19bb60b52dad ...
- CNN基础四:监测并控制训练过程的法宝——Keras回调函数和TensorBoard
训练模型时,很多事情一开始都无法预测.比如之前我们为了找出迭代多少轮才能得到最佳验证损失,可能会先迭代100次,迭代完成后画出运行结果,发现在中间就开始过拟合了,于是又重新开始训练. 类似的情况很多, ...
- tensorflow笔记(一)之基础知识
tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...
- tensorflow笔记(三)之 tensorboard的使用
tensorflow笔记(三)之 tensorboard的使用 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7429344.h ...
- 机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用
前言 在上一篇中,我简单介绍了一下Tensorflow以及在本机及阿里云的PAI平台上跑通第一个示例的步骤.在本篇中我将稍微讲解一下几个基本概念以及Tensorflow的基础语法. 本文代码都是基于A ...
- TensorFlow基础
TensorFlow基础 SkySeraph 2017 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com Over ...
随机推荐
- HDU-1695 莫比乌斯反演
这里学习一下莫比乌斯反演 翻看了很多书,发现莫比乌斯反演,准确来说不是一种固有的公式,而是一种法则. 我们定义F(n),为f(d)的和函数,而定义f(n)为某儿算术函数. 反演公式1:反演n的因子时 ...
- MyBatis基础:MyBatis关联查询(4)
1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...
- fifo 实现问题
AR# 63960 FIFO Generator v12.0 - [Common 17-55] 'get_property' expects at least one object.[axis_fif ...
- 修改host,上github
操作如下: 1.http://ping.chinaz.com/ 搜索github.com 海外ip,其实能找到的就两个;然后再搜gist.github.com 海外ip,也是两个. 192.30.25 ...
- poj2778(AC自动机+矩阵快速幂)
题意:给你n个字符串,问你长度为m的字符串且字符串中不含有那n个子串的字符串的数量 解题思路:这道题一开始就不太懂,还以为是组合数学的题目,后面看了别人的博客,才知道这是属于AC自动机的另一种用法,是 ...
- C. New Year and Rating 差分方程 思维
题意: 一个CF玩家打CF 给出其比赛列表和上分(掉分)情况 ,但是没给初始分 问最后最高分是多少 (情况不存在,或者可能无穷大) 思路: 设初始分为x 那么之前的回合的分数前缀和为sum 如 ...
- 洛谷P1220关路灯题解
题目 此题是一个状态转移方程还算比较多的一个区间DP,这个题也能启示我们如果某个状态不能够很好地解决问题,那么不妨试试再加一维,而且如果转移顺序不确定的话,可以试试记忆化搜索,说不定就可以比较容易的写 ...
- H5与APP混合开发相关知识点总结
整理一: 现在有这么个需求,如下图 app端点击右上角的 加 号 ,弹出模态框 这个项目是基于vue写的,客户端需要调用H5页面里定义的js方法,但是在vue里,所有的方法都是在组件内部声明的,也只能 ...
- P1313 计算系数
题目描述 给定一个多项式(by+ax)k(by+ax)^k(by+ax)k,请求出多项式展开后xn×ymx^n \times y^mxn×ym项的系数. 输入输出格式 输入格式: 共一行,包含555个 ...
- Zookeeper与Curator二三事【坑爹】
起因:我的Dubbo服务起不来:我本地Zookeeper3.4.11,Curator4.1 Caused by: org.apache.zookeeper.KeeperException$Unimpl ...