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

二、基本操作

  1. 定一个writer(log位置),用来写summary结果:train_writer = tf.summary.FileWriter("./resource/logdir", sess.graph)
  2. 对要统计的变量使用summary操作:比如               tf.summary.scalar("accuarcy_train", accuracy_train)  对精确度的统计,第一个参数是名字,第二个参数是变量名
  3. 把所有summary操作merge起来:                           merged = tf.summary.merge_all()
  4. 执行过程中fetch merged获得想要的变量值:        summary, _ = sess.run([merged, train_step], feed_dict={x: batch_xs, y_: batch_ys})
  5. 把第i次迭代的结果summary添加到train_writer:   train_writer.add_summary(summary, i)
  6. 关闭写                                                                       train_writer.close()
  7. 启动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(没用过)

四、实例源码

  1. def tensorboard():
  2. # None表示此张量的第一个维度可以是任何长度的
  3. x = tf.placeholder("float", [None, 784])
  4. y_ = tf.placeholder("float", [None, 10]) # 标签,正确结果
  5.  
  6. # 初始化两个参数
  7. W = tf.Variable(tf.zeros([784, 10]))
  8. b = tf.Variable(tf.zeros([10]))
  9. m = [1,2,3,4,5,6]
  10. tf.summary.histogram("xx", b)
  11. # softmax函数
  12. y = tf.nn.softmax(tf.matmul(x, W) + b) # 执行结果
  13.  
  14. # 交叉熵,成本函数
  15. # tf.reduce_sum 计算张量的所有元素的总和
  16. cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
  17.  
  18. # 梯度下降法来优化成本函数
  19. # 下行代码往计算图上添加一个新操作,其中包括计算梯度,计算每个参数的步长变化,并且计算出新的参数值
  20. train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
  21.  
  22. init = tf.initialize_all_variables()
  23. mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
  24.  
  25. prediction_train = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
  26. accuracy_train = tf.reduce_mean(tf.cast(prediction_train, "float"))
  27. tf.summary.scalar("accuarcy_train", accuracy_train)
  28.  
  29. # 显示图像
  30. batch_xs, batch_ys = mnist.train.next_batch(100)
  31. tf.summary.image('images', tf.reshape(batch_xs, [100, 28, 28, 1]))
  32.  
  33. # 用于tensorboard
  34. merged = tf.summary.merge_all()
  35.  
  36. with tf.Session() as sess:
  37. sess.run(init)
  38. train_writer = tf.summary.FileWriter("./resource/mnist_logs", sess.graph)
  39.  
  40. # 循环遍历1000次训练模型
  41. for i in range(1000):
  42. # 每一步迭代加载100个训练样本,然后执行一次train_step,并通过feed_dict将x 和 y张量占位符用训练训练数据替代
  43. summary, _ = sess.run([merged, train_step], feed_dict={x: batch_xs, y_: batch_ys})
  44.  
  45. if i % 10 == 0:
  46. train_writer.add_summary(summary, i)
  47. for index, d in enumerate(m):
  48. m[index] -= 0.1
  49. batch_xs, batch_ys = mnist.train.next_batch(100)
  50. train_writer.close()
  51.  
  52. correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
  53. accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
  54. print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

tensorboard基础使用的更多相关文章

  1. 基于Python玩转人工智能最火框架 TensorFlow应用实践✍✍✍

    基于Python玩转人工智能最火框架  TensorFlow应用实践 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起 ...

  2. Python玩转人工智能最火框架 TensorFlow应用实践 学习 教程

    随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起的框架投票中,2144 位参与者中有 1441 位都在使用 Tenso ...

  3. 第七节,TensorFlow编程基础案例-TensorBoard以及常用函数、共享变量、图操作(下)

    这一节主要来介绍TesorFlow的可视化工具TensorBoard,以及TensorFlow基础类型定义.函数操作,后面又介绍到了共享变量和图操作. 一 TesnorBoard可视化操作 Tenso ...

  4. TensorFlow基础笔记(9) Tensorboard可视化显示以及查看pb meta模型文件的方法

    参考: http://blog.csdn.net/l18930738887/article/details/55000008 http://www.jianshu.com/p/19bb60b52dad ...

  5. CNN基础四:监测并控制训练过程的法宝——Keras回调函数和TensorBoard

    训练模型时,很多事情一开始都无法预测.比如之前我们为了找出迭代多少轮才能得到最佳验证损失,可能会先迭代100次,迭代完成后画出运行结果,发现在中间就开始过拟合了,于是又重新开始训练. 类似的情况很多, ...

  6. tensorflow笔记(一)之基础知识

    tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...

  7. tensorflow笔记(三)之 tensorboard的使用

    tensorflow笔记(三)之 tensorboard的使用 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7429344.h ...

  8. 机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用

    前言 在上一篇中,我简单介绍了一下Tensorflow以及在本机及阿里云的PAI平台上跑通第一个示例的步骤.在本篇中我将稍微讲解一下几个基本概念以及Tensorflow的基础语法. 本文代码都是基于A ...

  9. TensorFlow基础

    TensorFlow基础 SkySeraph  2017 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com Over ...

随机推荐

  1. pyspider爬虫框架webui简介-爬取阿里招聘信息

    命令行输入pyspider开启pyspider 浏览器打开http://localhost:5000/ group表示组名,几个项目可以同一个组名,方便管理,当组名修改为delete时,项目会在一天后 ...

  2. 细述:nginx http内核模块提供的变量和解释

    导读 ngx_http_core_module模块在处理请求时,会有大量的变量,这些变量可以通过访问日志来记录下来,也可以用于其它nginx模块. 在我们对请求做策略如改写等等都会使用到一些变量,顺便 ...

  3. 解决Docker安装MySQL不区分大小写问题

    Docker安装MySQL忽略大小写问题的问题连接MySQL: 查看当前mysql的大小写敏感配置 show global variables like '%lower_case%'; +------ ...

  4. mpvue——支持less

    安装 安装less和less-loader,我用的是淘宝源,你也可以直接npm $ cnpm install less less-loader --save 配置 打开build目录下的webpack ...

  5. git 忽略部分文件类型的同步

    场景 利用 pycharm 进行代码操作的时候会自动创建 .idea/ 文件夹 特么我每次随便做点操作.这里面的东西也会随着自动改一些 一开始开始无视 如果是多人协同开发会导致代码合并相关的问题 因此 ...

  6. Android popupwindow 失去焦点或者点击空白区域时消失的解决方法

    先来看下Android API 的这个Methods: public void setOutsideTouchable (boolean touchable) Controls whether the ...

  7. properties文件操作

    properties文件操作类 可以使用java.util.Properties读取.properties文件中的内容 import java.io.InputStream; import java. ...

  8. 利用fis3构建前端项目工程

    FIS3是国内百度公司产出的一款前端工程构建工具,FIS3可以解决前端工程中性能优化.资源加载(异步.同步.按需.预加载.依赖管理.合并.内嵌).模块化开发.自动化工具.开发规范.代码部署等问题,首先 ...

  9. [HackerRank]New Year Chaos[UNDONE]

    Input (stdin)Download 2 8 5 1 2 3 7 8 6 4 8 1 2 5 3 7 8 6 4 Your Output (stdout) Too chaotic Too cha ...

  10. 微信小程序之动态添加、删除指定内容(view)和获取input值

    这次遇到个问题: 1. 动态的添加指定的view内容..嗯..很简单..wx:for就搞定 2. 动态添加的内容中有input,最终获取值的时候,要获取到所有input的值并且是一个数组..嗯.. 3 ...