简介
在这篇文章中,我们将通过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插件会被激活,你可以通过选择仪表盘右上角的 "不活跃 "下拉菜单来看到它们。
让我们看看我们的例子中可用的可视化功能。
标度
它显示了在训练过程中每个周期的准确性和损失的可视化。当你悬停在图形上时,它会显示更多的信息,如数值、步骤、时间。
图形
神经网络模型本质上是TensorFlow Keras中的计算图,它可以在本节中被可视化。
分布
这一部分显示了权重和偏差在训练时间段内的变化。
柱状图
这也是以3D格式显示权重和偏差在一段时间内的分布。
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.