为了更方便的理解、调试和优化TF程序,我们可以使用TensorBoard(可视化工具)。可以使用TensorBoard查看graph,绘制图表执行过程中的定量指标。TensorBoard是完全可配置的。

1 序列化数据(Serializing the data)到磁盘

TensorBoard通过读取TF事件文件进行操作,该文件包含了在TF运行过程中产生的摘要数据(summary data)

首先创建从中要收集摘要数据的TF图,并决定图中的哪些点(nodes)需要summary operations。比如需要记录随时间进行,学习率的变化和目标函数的改变。我们可以分别将学习率输出节点和损失输出节点加上tf.summary.scalar操作。并给每个scalar_summary一个有含义的标记,如‘learning rate’和‘loss function’。

或者想看看特定层的激活函数的分布,或梯度和权重的分布。通过将tf.summary.histogram分别附加到梯度输出和权重的变量,来收集数据。

所有的summary operations:

  • tf.summary.tensor_summary
  • tf.summary.scalar
  • tf.summary.histogram
  • tf.summary.audio
  • tf.summary.image
  • tf.summary.merge
  • tf.summary.merge_all

Class for writing Summaries

  • tf.summary.FileWriter
  • tf.summary.FileWriterCache

为了产生这些摘要数据,我们需要运行这些summary nodes。单独管理这些节点比较麻烦,因此使用tf.summary.merge_all将它们合并为一个单独的操作,来产生所有的摘要数据。最后通过tf.summary.FileWriter将摘要数据写到磁盘。

手写字体识别例子的源代码:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py

其中程序的最后一段:

parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data',
help='Directory for storing input data')
parser.add_argument('--log_dir', type=str, default='/tmp/tensorflow/mnist/logs/mnist_with_summaries',
help='Summaries log directory')

注:上面代码中路径的写法,绝对路径为该python文件所在的磁盘根路径+default指定的路径。比如该python在C:\XXX\XXX,则default='C:/tmp/tensorflow/mnist/logs/mnist_with_summaries'

可以在程序中根据需要改为自定义的路径如:

default='C:\\TMP\\TF\\MNIST_data'

(或者default='C:/TMP/TF/MNIST_data')

default='C:\\TMP\\TF\\logs\\mnist_with_summaries'

(或者default='C:/TMP/TF/logs/mnist_with_summaries')

  

或者在命令行运行程序时,指定自定义路径如:

python xx.py --data_dir=C:\\TMP\\TF\\MNIST_data --log_dir=C:\\TMP\\TF\\logs\\mnist_with_summaries

(或者python xx.py --data_dir=C:/TMP/TF/MNIST_data --log_dir=C:/TMP/TF/logs/mnist_with_summaries)

  

2  启动TensorBoard

在命令行运行如下命令:tensorboard --logdir=path/to/log-directory

在本例中:

tensorboard --logdir=C:/TMP/TF/logs/mnist_with_summaries --debug

(或者tensorboard --logdir=/TMP/TF/logs/mnist_with_summaries --debug)

  

注意:tensorborad的启动命令的根目录需要和日志的根目录保持一致。

在浏览器中输入地址localhost:6006

可以看到有7大模块:

  • SCALARS
  • IMAGES
  • AUDIO
  • GRAPHS
  • DISTRIBUTIONS
  • HISTOGRAMS
  • EMBEDDINGS

TensorBoard:Visualizing Learning 学习笔记的更多相关文章

  1. [Machine Learning]学习笔记-Logistic Regression

    [Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...

  2. Machine Learning 学习笔记

    点击标题可转到相关博客. 博客专栏:机器学习 PDF 文档下载地址:Machine Learning 学习笔记 机器学习 scikit-learn 图谱 人脸表情识别常用的几个数据库 机器学习 F1- ...

  3. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h

    DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...

  4. [置顶] Deep Learning 学习笔记

    一.文章来由 好久没写原创博客了,一直处于学习新知识的阶段.来新加坡也有一个星期,搞定签证.入学等杂事之后,今天上午与导师确定了接下来的研究任务,我平时基本也是把博客当作联机版的云笔记~~如果有写的不 ...

  5. Deep Learning 学习笔记(8):自编码器( Autoencoders )

    之前的笔记,算不上是 Deep Learning, 只是为理解Deep Learning 而需要学习的基础知识, 从下面开始,我会把我学习UFDL的笔记写出来 #主要是给自己用的,所以其他人不一定看得 ...

  6. [Python & Machine Learning] 学习笔记之scikit-learn机器学习库

    1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...

  7. 【deep learning学习笔记】Recommending music on Spotify with deep learning

    主要内容: Spotify是个类似酷我音乐的音乐站点.做个性化音乐推荐和音乐消费.作者利用deep learning结合协同过滤来做音乐推荐. 详细内容: 1. 协同过滤 基本原理:某两个用户听的歌曲 ...

  8. 【deep learning学习笔记】注释yusugomori的RBM代码 --- 头文件

    百度了半天yusugomori,也不知道他是谁.不过这位老兄写了deep learning的代码,包括RBM.逻辑回归.DBN.autoencoder等,实现语言包括c.c++.java.python ...

  9. [Machine Learning]学习笔记-线性回归

    模型 假定有i组输入输出数据.输入变量可以用\(x^i\)表示,输出变量可以用\(y^i\)表示,一对\(\{x^i,y^i\}\)名为训练样本(training example),它们的集合则名为训 ...

随机推荐

  1. Java泛型在spring jdbc template中的类似应用

    泛型的使用保证返回的对象类型的正确: package com.stono.gentest; import java.util.ArrayList; import java.util.List; pub ...

  2. 基于Daydream technical preview GVR13开发Daydream,Cardboard的Android应用

    本文用Unity的Daydream Preview GVR13版本开发同时兼容Daydream和Cardboard的Android应用,Android Studio版本为2.2.3. 下载最新Dayd ...

  3. HDU4734(数位dp)

    F(x) Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. 【G】开源的分布式部署解决方案 - 预告篇

    为什么想到要做分布式部署解决方案? 当项目越做越大以后,你会发现部署变成一件极其头疼的事情.当然头疼的绝不仅仅在部署一个环节,比如新服务器环境搭建当中就许多坑要踩.各种重复性的工作,包括但不仅限于增加 ...

  5. C# 连接 SQLServer 及操作

    随笔:连接: // 将tb_User表数据添加到DataGridView中 string sqlconn = "Data Source=localhost;Initial Catalog=d ...

  6. quagga源码学习--BGP协议路由更新

    BGP的核心就是交换路由,所以关键的部分还是在路由的更新与撤销上面,这之间包含了冗长的属性,community等等处理过程,不做详述. bgp_read函数是路由更新的事件处理函数,在收到BGP_MS ...

  7. tomcat catalina.sh JAVA_OPTS参数说明与配置

    JVM的博客: http://blog.csdn.net/java2000_wl/article/category/1249100 http://blog.csdn.net/cutesource/ar ...

  8. nodejs笔记2 --关于nodejs最新启动方式

    1,运行应用以前是node app.js或者 supervisor app.js 2, 现在的应用方式是npm start或者supervisor bin/www

  9. 【转载】HTTP Cookie学习笔记

    什么是cookie? cookie是什么?是饼干,小甜点? No! No! No! 我今天要总结的cookie并不是你所想的小甜心,我这里要说的cookie是Web开发中的一个重要的"武器& ...

  10. 深度了解Android 7.0 ,你准备好了吗?

    作者:Redyan, 腾讯移动客户端开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/288.html ...