Keras中的TensorBoard初级教程

316 阅读5分钟

简介

在这篇文章中,我们将通过TensorBoard的教程,它是一个可视化工具,可以了解神经网络模型和训练过程的各种指标。我们将首先解释什么是TensorBoard以及如何安装它。然后,我们将向你展示一个如何使用Keras的Tensorboard的例子,并通过各种可视化。

什么是TensorBoard?

TensorBoard是一个可视化的网络应用,可以更好地了解神经网络模型的各种参数及其训练指标。当你在做神经网络模型的实验并希望密切关注相关指标时,这种可视化是相当有用的。它是开源的,是Tensorflow集团的一部分。

你可以用TensorBoard做的一些有用的事情包括 --

  • 可视化指标,如准确性和损失。
  • 可视化模型图。
  • 可视化权重和偏差的直方图,以了解它们在训练中的变化。
  • 可视化文本、图像和音频等数据。
  • 可视化低维空间中的嵌入。

TensorBoard教程(Keras

在这里,我们将使用一个小项目,在Keras中为Tensorboard教程创建一个神经网络。为此,我们将使用著名的MNIST手写数字识别数据集。

由于这是一个TensorBoard教程,我们不会过多解释数据预处理和神经网络构建过程。要了解有关MNIST手写数字数据集工作的更多细节,你可以查看下面的教程---。

i) 安装TensorBoard

你可以通过使用pip来安装TensorBoard,如下图所示。

pip install tensorboard

二)启动TensorBoard

我们需要做的第一件事是启动TensorBoard服务。要做到这一点,你需要在命令提示符下运行。 -logdir参数标志着数据将被保存到可视化TensorBoard的目录。在这里,我们已经给了目录名称为 "logs"。

 tensorboard --logdir logs

这将在默认的6066端口启动TensorBoard服务,如下图所示。TesnorBoard仪表板可以被访问为http://localhost:6006/

输出。

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.5.0 at http://localhost:6006/ (Press CTRL+C to quit)

在Jupyer笔记本中,你可以在单元格中发出以下命令

%tensorboard --logdir logs

三)加载库

我们将为我们的例子快速导入所需的库。(请注意,这些库与TensorBoard无关,但在构建我们的例子的神经网络时需要。)

import

四)加载MNIST数据集

现在我们将加载作为Keras软件包一部分的MNIST数据集。在加载数据集后,让我们也快速地将一个样本数据可视化。

(X_train, y_train) , (X_test, y_test) = keras.datasets.mnist.load_data()
plt.matshow(X_train[0])

输出。

v) 预处理

现在我们将对数据进行预处理,在0到1之间进行归一化处理,然后将其扁平化。

在[8]中。

X_train = X_train / 255 
X_test = X_test / 255

X_train_flattened = X_train.reshape(len(X_train), 28*28) 
X_test_flattened = X_test.reshape(len(X_test), 28*28)

十一)创建和编译模型

现在我们创建并编译一个简单的神经网络模型,只包括一个输入层,一个由100个神经元组成的隐藏层,以及一个输出层。所有其他配置都是标准配置。

model

vii) 创建回调对象

这是我们在使用TensorBoard工作时需要引起注意的地方。我们必须为TensorBoard创建一个Keras回调对象,这将有助于在训练过程中为TensorBoard写日志。

请注意,下面log_dir的父路径应该与我们在第二步中启动TensorBoard服务时给出的logdir值相同。

tb_callback = tf.keras.callbacks.TensorBoard(log_dir="logs/", histogram_freq=1)

viii) 训练模型

最后,我们通过使用fit()函数开始训练模型。我们训练了5个epochs,并注意到我们也传递了我们在上一步创建的回调对象。

model
Epoch 1/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2773 - accuracy: 0.9206
Epoch 2/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1255 - accuracy: 0.9627
Epoch 3/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0881 - accuracy: 0.9738
Epoch 4/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0668 - accuracy: 0.9793
Epoch 5/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0528 - accuracy: 0.9840

ix) Tensorboard中的可视化模型

我们现在可以进入我们在第一步开始的TensorBoard仪表盘,看看它能提供哪些可视化的东西。可视化主要取决于你为TensorBoard记录了什么数据。根据记录的数据,相应的TensorBoard插件会被激活,你可以通过选择仪表盘右上角的 "不活跃 "下拉菜单来看到它们。

让我们看看我们的例子中可用的可视化功能。

标度

它显示了在训练过程中每个周期的准确性和损失的可视化。当你悬停在图形上时,它会显示更多的信息,如数值、步骤、时间。

TensorBoard-Tutorial-Example-Visualization-1

图形

神经网络模型本质上是TensorFlow Keras中的计算图,它可以在本节中被可视化。

TensorBoard Tutorial Example Visualization-2

分布

这一部分显示了权重和偏差在训练时间段内的变化。

TensorBoard Tutorial Example Visualization-3

柱状图

这也是以3D格式显示权重和偏差在一段时间内的分布。

TensorBoard Tutorial Example Visualization 4

x) 在TensorBoard中比较不同的模型

创建一个好的神经网络不是一个简单的工作,需要多次运行来实验各种参数。有了TensorBoard,你可以在仪表板上直观地看到所有模型运行的性能,并轻松地进行比较。

为此,我们将在主文件夹内的不同子文件夹中创建训练的日志。下面的例子将帮助你更好地理解。

在第一次运行中,我们创建了TensorBoard的Keras回调对象,其日志将被保存在主日志文件夹的 "run1 "文件夹中。

tb_callback = tf.keras.callbacks.TensorBoard(log_dir="logs/run1", histogram_freq=1)
model.fit(X_train, y_train, epochs=5, callbacks=[tb_callback])

在第二次运行中,我们将日志路径设为run2,如下图所示。

tb_callback = tf.keras.callbacks.TensorBoard(log_dir="logs/run2", histogram_freq=1)
model.fit(X_train, y_train, epochs=5, callbacks=[tb_callback])

现在,当我们看到TensorBoard仪表板时,它将以橙色和蓝色的线条显示两个运行的信息,用于准确性和损失图。

总结

希望你觉得这篇文章很有用,我们为初学者提供了一个关于TensorBoard的小型介绍性教程。我们了解了如何安装和启动TensorBoard仪表盘,以及在Keras的一个例子的帮助下的各种可视化。

The postTensorBoard Tutorial in Keras for Beginnerappeared first onMLK - Machine Learning Knowledge.