TensorFlow教程之进阶指南 3.3 TensorBoard:可视化学习

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权。

TensorBoard:可视化学习 

TensorBoard 涉及到的运算,通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算。

为了更方便 TensorFlow 程序的理解、调试与优化,我们发布了一套叫做 TensorBoard 的可视化工具。你可以用 TensorBoard 来展现你的 TensorFlow 图像,绘制图像生成的定量指标图以及附加数据。

当 TensorBoard 设置完成后,它应该是这样子的:

数据序列化 

TensorBoard 通过读取 TensorFlow 的事件文件来运行。TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据。下面是 TensorBoard 中汇总数据(Summary data)的大体生命周期。

首先,创建你想汇总数据的 TensorFlow 图,然后再选择你想在哪个节点进行汇总(summary)操作

比如,假设你正在训练一个卷积神经网络,用于识别 MNISt 标签。你可能希望记录学习速度(learning rate)的如何变化,以及目标函数如何变化。通过向节点附加scalar_summary操作来分别输出学习速度和期望误差。然后你可以给每个 scalary_summary 分配一个有意义的 标签,比如 'learning rate' 和 'loss function'

或者你还希望显示一个特殊层中激活的分布,或者梯度权重的分布。可以通过分别附加 histogram_summary运算来收集权重变量和梯度输出。

所有可用的 summary 操作详细信息,可以查看summary_operation文档。

在TensorFlow中,所有的操作只有当你执行,或者另一个操作依赖于它的输出时才会运行。我们刚才创建的这些节点(summary nodes)都围绕着你的图像:没有任何操作依赖于它们的结果。因此,为了生成汇总信息,我们需要运行所有这些节点。这样的手动工作是很乏味的,因此可以使用tf.merge_all_summaries来将他们合并为一个操作。

然后你可以执行合并命令,它会依据特点步骤将所有数据生成一个序列化的Summary protobuf对象。最后,为了将汇总数据写入磁盘,需要将汇总的protobuf对象传递给tf.train.Summarywriter

SummaryWriter 的构造函数中包含了参数 logdir。这个 logdir 非常重要,所有事件都会写到它所指的目录下。此外,SummaryWriter 中还包含了一个可选择的参数 GraphDef。如果输入了该参数,那么 TensorBoard 也会显示你的图像。

现在已经修改了你的图,也有了 SummaryWriter,现在就可以运行你的神经网络了!如果你愿意的话,你可以每一步执行一次合并汇总,这样你会得到一大堆训练数据。这很有可能超过了你想要的数据量。你也可以每一百步执行一次合并汇总,或者如下面代码里示范的这样。

merged_summary_op = tf.merge_all_summaries()
summary_writer = tf.train.SummaryWriter('/tmp/mnist_logs', sess.graph)
total_step = 0
while training:
  total_step += 1
  session.run(training_op)
  if total_step % 100 == 0:
    summary_str = session.run(merged_summary_op)
    summary_writer.add_summary(summary_str, total_step)

现在已经准备好用 TensorBoard 来可视化这些数据了。

启动TensorBoard 

输入下面的指令来启动TensorBoard

python tensorflow/tensorboard/tensorboard.py --logdir=path/to/log-directory

这里的参数 logdir 指向 SummaryWriter 序列化数据的存储路径。如果logdir目录的子目录中包含另一次运行时的数据,那么 TensorBoard 会展示所有运行的数据。一旦 TensorBoard 开始运行,你可以通过在浏览器中输入 localhost:6006 来查看 TensorBoard。

如果你已经通过pip安装了 TensorBoard,你可以通过执行更为简单地命令来访问 TensorBoard

tensorboard --logdir=/path/to/log-directory

进入 TensorBoard 的界面时,你会在右上角看到导航选项卡,每一个选项卡将展现一组可视化的序列化数据集 。对于你查看的每一个选项卡,如果 TensorBoard 中没有数据与这个选项卡相关的话,则会显示一条提示信息指示你如何序列化相关数据。

时间: 2024-08-30 02:20:58

TensorFlow教程之进阶指南 3.3 TensorBoard:可视化学习的相关文章

TensorFlow教程之进阶指南 3.1 总览

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 综述 Overview Variables: 创建,初始化,保存,和恢复 TensorFlow Variables 是内存中的容纳 tensor 的缓存.这一小节介绍了用它们在模型训练时(during training)创建.保存和更新模型参数(model parameters) 的方法. TensorFlow 机制 101 用 MNIST 手写数字识别作为一个小例子,一步一步的将使用 TensorFlow 基

TensorFlow教程之进阶指南 3.5 读取数据

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 数据读取 TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据. 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况). 目录 数据读取 供给数据(Feeding) 从文件读取数据 文

TensorFlow教程之进阶指南 3.10 共享变量

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 共享变量 你可以在怎么使用变量中所描述的方式来创建,初始化,保存及加载单一的变量.但是当创建复杂的模块时,通常你需要共享大量变量集并且如果你还想在同一个地方初始化这所有的变量,我们又该怎么做呢.本教程就是演示如何使用tf.variable_scope() 和tf.get_variable()两个方法来实现这一点. 问题 假设你为图片过滤器创建了一个简单的模块,和我们的卷积神经网络教程模块相似,但是这里包括两个卷

TensorFlow教程之进阶指南 3.7 添加新的OP

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 增加一个新 Op 预备知识: 对 C++ 有一定了解. 已经下载 TensorFlow 源代码并有能力编译它. 如果现有的库没有涵盖你想要的操作, 你可以自己定制一个. 为了使定制的 Op 能够兼容原有的库 , 你必须做以下工作: 在一个 C++ 文件中注册新 Op. Op 的注册与实现是相互独立的. 在其注册时描述了 Op 该如何执行. 例如, 注册 Op 时定义了 Op 的名字, 并指定了它的输入和输出.

TensorFlow教程之进阶指南 3.8 自定义数据读取

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 自定义数据读取 基本要求: 熟悉 C++ 编程. 确保下载 TensorFlow 源文件, 并可编译使用. 我们将支持文件格式的任务分成两部分: 文件格式: 我们使用 Reader Op来从文件中读取一个 record (可以使任意字符串). 记录格式: 我们使用解码器或者解析运算将一个字符串记录转换为TensorFlow可以使用的张量. 例如, 读取一个 CSV 文件,我们使用 一个文本读写器, 然后是从一行

TensorFlow教程之进阶指南 3.6 线程和队列

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 正如TensorFlow中的其他组件一样,队列就是TensorFlow图中的节点.这是一种有状态的节点,就像变量一样:其他节点可以修改它的内容.具体来说,其他节点可以把新元素插入到队列后端(rear),也可以把队列前端(front)的元素删除. 为了感受一下队列,让我们来看一个简单的例子.我们先创建一个"先入先出"的队列(FIFOQue

TensorFlow教程之进阶指南 3.2 变量:创建、初始化、保存和加载

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 当训练模型时,用变量来存储和更新参数.变量包含张量 (Tensor)存放于内存的缓存区.建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘.这些变量的值可在之后模型训练和分析是被加载. 本文档描述以下两个TensorFlow类.点击以下链接可查看完整的API文档: tf.Variable 类 tf.train.Saver 类 创建 当创建一个变量时,你将一个张量作为初始值传入构造函数Variable(

TensorFlow教程之进阶指南 3.9 使用 GPUs

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 支持的设备 在一套标准的系统上通常有多个计算设备. TensorFlow 支持 CPU 和 GPU 这两种设备. 我们用指定字符串strings 来标识这些设备. 比如: "/cpu:0": 机器中的 CPU "/gpu:0": 机器中的 GPU, 如果你有一个的话. "/gpu:1": 机器中的第二个 GPU, 以此类推... 如果一个 TensorFlow

TensorFlow教程之完整教程 2.5 TensorFlow运作方式入门

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 本篇教程的目的,是向大家展示如何利用TensorFlow使用(经典)MNIST数据集训练并评估一个用于识别手写数字的简易前馈神经网络(feed-forward neural network).我们的目标读者,是有兴趣使用TensorFlow的资深机器学习人士. 因此,撰写该系列教程并不是为了教大家机器学习领域的基础知识. 在学习本教程之前,请确保您已按照安装TensorFlow教程中的要求,完成了安装. 教程使