如何使用 Tensorflow 通过 Python 可视化训练结果?

tensorflowpythonserver side programmingprogramming

借助‘matplotlib’库,可以使用 Python 通过 Tensorflow 可视化训练结果。‘plot’方法用于在控制台上绘制数据。

阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?

我们将使用 Keras Sequential API,它有助于构建用于处理普通层堆栈的顺序模型,其中每个层都有一个输入张量和一个输出张量。

包含至少一个层的神经网络称为卷积层。我们可以 使用卷积神经网络构建学习模型。 

使用 keras.Sequential 模型创建图像分类器,并使用 preprocessing.image_dataset_from_directory 加载数据。数据高效地从磁盘加载。识别过度拟合并应用技术来缓解它。这些技术包括数据增强和 dropout。有 3700 朵花的图像。该数据集包含 5 个子目录,每个类有一个子目录。它们是:雏菊、蒲公英、玫瑰、向日葵和郁金香。

我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 有助于通过浏览器运行 Python 代码,并且无需配置,并且可以免费访问 GPU(图形处理单元)。 Colaboratory 已在 Jupyter Notebook 上构建。

示例

print("计算准确率")
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
print("计算损失")
loss = history.history['loss']
val_loss = history.history['val_loss']

epochs_range = range(epochs)
print("结果正在可视化")
plt.figure(figsize=(8, 8))
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training准确率')
plt.plot(epochs_range, val_acc, label='验证准确率')
plt.legend(loc='右下')
plt.title('训练和验证准确率')
plt.subplot(1, 2, 2)

plt.plot(epochs_range, loss, label='训练损失')
plt.plot(epochs_range, val_loss, label='验证损失')
plt.legend(loc='右上')
plt.title('训练和验证损失')
plt.show()

代码来源 −https://www.tensorflow.org/tutorials/images/classification

输出

计算准确率
计算损失
结果正在可视化

解释

  • 上面的图表明训练准确率和验证准确率不同步。

  • 该模型在验证上仅实现了约 60% 的准确率数据集。

  • 这被称为过度拟合。

  • 训练准确率随着时间的推移呈线性增长,但验证准确率在训练过程中停滞在 60% 左右。

  • 当训练示例数量较少时,模型会从训练示例中的噪声或不需要的细节中学习。

  • 这会对模型在新示例上的性能产生负面影响。

  • 由于过度拟合,模型将无法在新数据集上很好地概括。

  • 有很多方法可以避免过度拟合。我们将使用数据增强来克服过度拟合。


相关文章