如何使用Python和TensorFlow可视化训练结果?
使用Python和“matplotlib”库可以使用TensorFlow可视化训练结果。使用“plot”方法将数据绘制在控制台上。
更多Python相关文章,请阅读:Python 教程
我们使用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='训练准确度')
plt.plot(epochs_range, val_acc, label='验证准确度')
plt.legend(loc='lower right')
plt.title('训练和验证准确度')
plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='训练损失')
plt.plot(epochs_range, val_loss, label='验证损失')
plt.legend(loc='upper right')
plt.title('训练和验证损失')
plt.show()
代码来源- https://www.tensorflow.org/tutorials/images/classification
输出
计算准确度
计算损失
正在可视化结果
解释
-
上面的绘图显示训练精度和验证精度不同步。
-
模型在验证数据集上仅达到了约60%的准确性。
-
这就是过拟合。
-
训练精度随时间线性增加,但在训练过程中验证精度在约60%处停滞不前。
-
当训练样例数量很少时,模型会从训练样例中学习到噪声或不必要的详细信息。
-
这会对模型在新样例上的表现产生负面影响。
-
由于过拟合,模型将无法在新数据集上进行良好的泛化。
-
有许多方法可以避免过拟合,我们将使用数据增强来克服过拟合。