章节索引 :

TensorBoard 的简介与快速上手

在之前的学习之中,我们已经对整个机器学习的结构有了一个大致的了解,但是我们在查看训练结果的时候只采用了两种可视化方法:

  • 使用 print 或者 log 来打印出一些日志与结果;
  • 使用 pyplot 来进行运行结果的可视化。

这两种结果各有优劣,第一种方法比较快速,能够在训练的时候直接查看,但是却不够直观;而第二种方法能够很直观的看到变化,但是却只能在训练结束后查看。有没有一种更好的方法来做到实时的、快速地、直观的查看呢?

那就是接下来几节课我们要学习的可视化工具 —— TensorBoard 。

1. 什么是 TensorBoard

TensorBoard 是一个工具包,它提供机器学习实验所需的可视化功能和工具

值得注意的是,这里并没有明确说明要使用 TensorFlow 框架才能使用 TensorBoard 才能进行可视化工作。因此在实际中,很多的其他框架之中都内置了 TensorBoard 的工具,比如 PyTorch 等。总体而言,TensorBoard 是一个通用的,高效率的可视化工具。

具体而言,TensorBoard 可以实现以下的功能:

  • 对准确率、训练损失等参数进行可视化工作
  • 对模型的架构进行可视化工作
  • 对文本、图片、音频等媒体数据进行显示
  • 查看权重、偏差的直方图;
  • 等等。

在这里,结合我们之前的训练例子,我们会更多地对前三点应用进行讲解。

2. TensorBoard 的安装

一般情况下,当你安装 TensorFlow 的时候,已经默认帮你安装了 TensorBoard ,你只需要直接使用即可。但是也不排除某些特殊情况导致没有一起安装的情况。

2.1 使用 PIP 安装

使用 PIP 安装比较简单,直接运行以下命令即可:

pip install TensorBoard

如果网络连接失败,可以参考以前的 TensorFlow 安装教程进行镜像的更换。

2.2 使用 Anaconda 安装

如果有些同学是在 Anaconda 环境中进行的操作,那么推荐使用 Anaconda 命令进行安装:

conda install TensorBoard

通过这样的操作,我们就完成了 TensorBoard 的安装工作。

3. TensorBoard 的快速上手使用

既然已经安装了 TensorBoard ,那么接下来我们便来看一下如何快速上手使用 TensorBoard 。

在这里,我们并不会进行更加深入的学习,也不会记录过于复杂的数据,这一节的目的是让大家对 TensorBoard 的整体使用流程有一个大致的了解。

首先,我们编写一段很平常的 Mnist 数据集的识别程序:

首先,我们进行数据集的获取与模型的构建:

import tensorflow as tf

(x_train, y_train),(x_test, y_test) = tf.keras.datasets.mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(256, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
  ])

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

这是一个非常简单的线性程序,并且我们在模型编译的过程之中,指定记录的指标包括准确率(accuracy)

然后我们进行模型的训练,同时进行相应的记录工作:

tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='./logs')

model.fit(x=x_train, y=y_train, 
          epochs=3, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])

在这里,我们定义了一个回调,该回调是 TensorBoard 回调,该回调会在模型训练的时候进行日志的输出与构建工作。

在这里我们只指定了一个参数:

  • logdir:用于存放日志的目录。

在后续的学习之中,我们会陆续学习到更多的参数与使用方法。

运行程序,我们可以得到如下输出:

Epoch 1/3
1875/1875 [==============================] - 5s 3ms/step - loss: 0.2252 - accuracy: 0.9344 - val_loss: 0.1082 - val_accuracy: 0.9684
Epoch 2/3
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0933 - accuracy: 0.9712 - val_loss: 0.1037 - val_accuracy: 0.9672
Epoch 3/3
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0622 - accuracy: 0.9807 - val_loss: 0.0705 - val_accuracy: 0.9783
<tensorflow.python.keras.callbacks.History at 0x7f5500172f98>

然后我们在当前目录下运行终端,并且输入命令:

tensorboard --logdir logs

其中 --logdir 的参数就是我们刚才指定的日志目录,通过运行以上命令,我们能得到相应的输出,通过输出我们可以发现,我们的 TensorBoard 目前在 localhost:6006 端口运行。

在浏览器中打开 localhost:6006 ,我们就可以发现如下界面:

图片描述

我们可以发现,该页面一共有两个选项卡,第一个选项卡包含了两个图表:

  • 训练集、测试集的准确率的图表;
  • 训练集、测试集的 Loss 的变化的图表。

其中第二个图表是自动生成的,也就是说 TensorBoard 会自动记录 Loss 变化;而第一个图表是由我们编译模型的时候指定的。

打开第二个选项卡,我们可以看到我们的网络的模型:

图片描述

该模型图展示了我们的网络模型,并且支持缩放等功能

4. 小结

在这节课中,我们学习了什么是 TensorBoard ,同时了解了如何安装 TensorBoard ,最后,我们通过一个具体的实例了解了 TensorBoard 的具体使用方法以及整体的流程。

TensorFlow 简介、安装与快速入门
TensorFlow 简介 TensorFlow 安装 - CPU TensorFlow 安装 - GPU TensorFlow 快速入门示例
TensorFlow 模型的简洁表示-Keras
Keras 简介 使用 tf.keras 进行图片分类 使用 Keras 进行文本分类 使用 Keras 进行回归 在 Keras 中保存与加载模型 在 Keras 中进行模型的评估 Keras 中的Masking 与 Padding
TensorFlow 中的数据格式
TensorFlow 中的数据核心 使用 TensorFlow 加载 CSV 数据 使用 TensorFlow 加载 Numpy 数据 使用 TF 加载 DateFrame 数据 使用图像数据来训练模型 在 TensorFlow 之中使用文本数据 TF 之中的 Unicode 数据格式的处理
TensorFlow模型的高级表示-Estimat
使用预设的 Estimator 模型 将Keras模型转化为Estimator模型 Estimator实现BoostingTree模型
TensorFlow 高级技巧
过拟合问题 TensorFlow 中的回调函数 文本数据嵌入 在 TensorFlow 之中使用卷积神经网络 在 TensorFlow 之中使用循环神经网络 在 TensorFlow 之中使用注意力模型 在 TensorFlow 之中进行迁移学习 在 TensorFlow 之中进行数据增强 在 TensorFlow 之中进行图像分割 如何进行多 GPU 的分布式训练? 使用 tf.function 提升效率 使用 TF HUB 进行模型复用
TensorFlow高级技巧-自定义
使用 TensorFlow 进行微分操作 在 TensorFlow 之中自定义网络层与模型 在 TensorFlow 之中自定义训练
TF 框架中的可视化工具-TensorBoard
TensorBoard 的简介与快速上手 使用 TensorBoard 记录训练中的各项指标 在 TensorBoard 之中查看模型结构图 在 TensorBoard 之中记录图片数据