在Keras中显示深度学习模型训练历史

通过观察神经网络和深度学习模型在训练过程中随时间推移的性能,你可以了解到更多关于神经网络和深度学习模型的知识。

Keras是一个功能强大的Python库,它为创建深度学习模型提供了一个干净的接口,并封装了更具技术性的TensorFlow和Theano后端。

在这篇文章中,你将了解如何在使用Keras进行Python训练期间查看和可视化深度学习模型随时间推移的性能。

我们开始吧。

访问Keras中的模型训练历史记录

Keras在训练深度学习模型时提供了注册回调的功能。

训练所有深度学习模型时注册的默认回调之一是历史回调。它记录每个时期的训练指标。这包括验证数据集的损失和准确度(对于分类问题)以及损失和准确度(如果设置了一个数据集的话)。

历史对象是从调用用于训练模型的Fit()函数返回的。指标存储在返回对象的历史成员的字典中。

例如,你可以在训练模型后使用以下代码片段列出在历史记录对象中收集的指标:

...
# list all data in history
print(history.history.keys())

例如,对于针对验证数据集的分类问题进行训练的模型,这可能会生成以下列表:

['accuracy', 'loss', 'val_accuracy', 'val_loss']

我们可以使用历史对象中收集的数据来创建绘图。

曲线图可以提供有关模型训练的有用信息,例如:

  • 它在epoch(斜率)上的收敛速度。
  • 模型是否已经收敛(直线的平台期)。
  • 模式是否可以过度学习训练数据(验证线的音调变化)。

还有更多。

在Keras中可视化模型训练历史。

我们可以从收集的历史数据中创建曲线图。

在下面的例子中,我们创建了一个小型网络来模拟皮马印第安人糖尿病发作的二进制分类问题。这是UCI机器学习存储库提供的一个小数据集。你可以下载数据集,并将其保存为当前工作目录中的pima-indians-diabetes.csv(更新:从此处下载)。

该示例收集模型训练返回的历史记录,并创建两个图表:

  • 训练和验证数据集在训练时段上的精确度曲线图。
  • 训练和验证数据集在训练期间的损失图。
# Visualize training history
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt
import numpy
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
history = model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, verbose=0)
# list all data in history
print(history.history.keys())
# summarize history for accuracy
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()

图表如下所示。按照惯例,验证数据集的历史记录被标记为test,因为它确实是模型的测试数据集。

从精确度图中我们可以看到,模型可能需要更多的训练,因为在过去的几个时期,两个数据集的精确度趋势仍在上升。我们还可以看到,模型还没有过度学习训练数据集,在两个数据集上显示出相当的技能。

训练和验证数据集上模型精度的绘图
训练和验证数据集上模型精度的绘图

从损失图中可以看出,该模型在训练数据集和验证数据集(标记为test)上具有相当的性能。如果这些平行的情节开始一致地离开,这可能是一个在更早的时代停止训练的迹象。

训练和验证数据集上的模型损失曲线图
训练和验证数据集上的模型损失曲线图

摘要

在这篇文章中,你发现了在深度学习模型的训练过程中收集和审查指标的重要性。

你了解了Keras中的历史回调,以及如何始终通过调用Fit()函数返回历史回调以训练模型。你学习了如何从训练期间收集的历史数据创建打印。

00

Python

发表评论

电子邮件地址不会被公开。 必填项已用*标注

什么阻碍了你实现迈入机器学习领域的目标?

什么阻碍了你实现迈入机器学习领域的目标?

2020-04-22 机器学习

如果你在为进入机器学习领域而挣扎,感觉到有什么东西阻止了自己的开始,那么你应该看看这篇文章。 在这篇文章中,我们会讨论阻止进入机器学习领域的自我限制的信念,让你明白面临的问题。 几乎总是一种自我限制的信念阻碍了你们的进步。 也许你会在一个或多个这样的信念中看到自己。如果是这样的话, [......]

了解详情

R语言机器学习迷你课程

R语言机器学习迷你课程

2020-08-12 机器学习

在这个迷你课程中,你将发现如何开始,构建精确的模型,并自信地完成在14天内使用R预测建模机器学习项目。 这是一个重要而重要的文章。你可能想把它书签。 了解如何准备数据,拟合机器学习模型,并用我的新书评估他们在r上的预测,包括14步教程、3个项目和完整源代码。 我们开始吧。 [......]

了解详情

关于机器学习的几点思考

关于机器学习的几点思考

2020-04-26 机器学习

机器学习是一个大的、跨学科的研究领域。 你可以通过机器学习获得令人印象深刻的结果,并找到非常具有挑战性的问题的解决方案。但这只是更广泛的机器学习领域的一小部分,通常被称为预测建模或预测分析。 在这篇文章中,你将发现如何改变你对机器学习的思考方式,以便更好地为你提供机器学习实践者的服务。 [......]

了解详情

找到你的机器学习部落

找到你的机器学习部落

2020-04-26 机器学习

机器学习是一个充满算法和数据的迷人而强大的研究领域。 问题是,有这么多不同类型的人对机器学习感兴趣,每个人都有不同的需求。重要的是要了解你想要从机器学习中得到什么,并根据这些需求调整你的自学。 如果你不这样做,你很容易就会陷入困境,迷失方向,失去兴趣,得不到你想要的东西。 找到 [......]

了解详情

应用机器学习过程

应用机器学习过程

2020-04-26 机器学习

随着时间的推移,在处理应用机器学习问题时,你会开发出一种模式或流程,以快速获得良好的正常结果。 一旦开发完成,你就可以在一个又一个项目上反复使用此过程。你的流程越健壮、越发达,你就能越快地获得可靠的结果。 在这篇文章中,我想与你分享我解决机器学习问题的过程框架。 你可以将其用作下一 [......]

了解详情