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

二、基本操作

  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}))

原文地址:https://www.cnblogs.com/coolqiyu/p/9092807.html

时间: 2024-11-09 20:21:20

tensorboard基础使用的相关文章

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

随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起的框架投票中,2144 位参与者中有 1441 位都在使用 TensorFlow 框架,是所有框架中使用率最高的.但 TensorFlow 这种静态计算图有一定的学习成本,因此也阻挡了很多准备入坑的初学者.本文介绍了学习 TensorFlow 的系列教程,旨在通过简单的理论与实践帮助初学者一步步掌握 TensorFlow 的编程技巧. 这一系列教程分为 6 部分,从为

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

TensorFlow基础9——tensorboard显示网络结构

import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(input,in_size,out_size,activation_function=None): with tf.name_scope('layer'): with tf.name_scope('Weights'): Weights = tf.Variable(tf.random_normal([in_size,out

TensorFlow基础笔记(9) Tensorboard可视化显示

参考: http://blog.csdn.net/l18930738887/article/details/55000008 import tensorflow as tf import numpy as np def add_layer(inputs, in_size, out_size, n_layer, activation_function=None): # add one more layer and return the output of this layer layer_name

TensorBoard: 可视化学习

当使用Tensorflow训练大量深层的神经网络时,我们希望去跟踪神经网络的整个训练过程中的信息,比如迭代的过程中每一层参数是如何变化与分布的,比如每次循环参数更新后模型在测试集与训练集上的准确率是如何的,比如损失值的变化情况,等等.如果能在训练的过程中将一些信息加以记录并可视化得表现出来,是不是对我们探索模型有更深的帮助与理解呢? Tensorflow官方推出了可视化工具Tensorboard,可以帮助我们实现以上功能,它可以将模型训练过程中的各种数据汇总起来存在自定义的路径与日志文件中,然后

tensorflow笔记(一)之基础知识

tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇notebook将一步步构建一个tensorflow的线性回归的例子,并讲述其中的一些基础知识.我会把notebook文件放在结尾的百度云链接. 首先第一步,要安装tensorflow,这个网上的教程很多,我安装的版本是ubuntu下1.2.1的tensorflow,推荐用pip(一步就好)这里附上一个

tensorflow 基础安装

第1章 TensorFlow基础学习 1.1 1)TensorFlow Python 库安装 1)  pip install wheel 2)  download  tensorflow-.whl file a)     https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label

学习TensorFlow,TensorBoard可视化网络结构和参数

在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可以显示网络结构,又可以显示训练和测试过程中各层参数的变化情况.本博文分为四个部分,第一部分介绍相关函数,第二部分是代码测试,第三部分是运行结果,第四部分介绍相关参考资料. 一. 相关函数 TensorBoard的输入是tensorflow保存summary data的日志文件.日志文件名的形式如:e

通俗易懂之Tensorflow summary类 & 初识tensorboard

前面学习的cifar10项目虽小,但却五脏俱全.全面理解该项目非常有利于进一步的学习和提高,也是走向更大型项目的必由之路.因此,summary依然要从cifar10项目说起,通俗易懂的理解并运用summary是本篇博客的关键. 先不管三七二十一,列出cifar10中定义模型和训练模型中的summary的代码: # Display the training images in the visualizer. tf.summary.image('images', images) def _activ