前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Keras中展示深度学习模式的训练历史记录

在Keras中展示深度学习模式的训练历史记录

作者头像
AiTechYun
发布2018-03-02 16:23:52
2.7K0
发布2018-03-02 16:23:52
举报
文章被收录于专栏:ATYUN订阅号ATYUN订阅号

通过观察神经网络和深度学习模型在训练期间的表现,你可以得知很多有用的信息。

Keras是Python中强大的库,为创建深度学习模型提供了一个简单的接口,并包装了更为技术性的TensorFlow和Theano后端。

在这篇文章中,你将发现在训练时如何使用Python中的Keras对深入学习模型的性能进行评估和可视化。

让我们开始吧。

  • 更新2017/03:更新Keras 2.0.2,TensorFlow 1.0.1,Theano 0.9.0的示例。

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

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

训练所有深度学习模型时都会使用历史记录回调,这种回调函数被记为系统默认的回调函数。它记录每个时期的训练权重,包括损失和准确性(用于分类问题中)。

历史对象从调用fit()函数返回来训练模型。权重存储在返回的对象的历史词典中。

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

代码语言:js
复制
# list all data in history
print(history.history.keys())

例如,对于使用验证数据集对分类问题进行训练的模型,可能会产生:

代码语言:javascript
复制
['acc','loss','val_acc','val_loss']

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

这些图可以提供对模型训练有帮助的信息,如:

  • 它的收敛速度。(斜度)
  • 模型是否已经收敛(线的高度)。
  • 模式是否过度学习训练数据验证线的拐点(验证线的变化)。

或者更多。

可视化Keras的模型训练历史

我们可以用收集的历史数据创建图。

在下面的例子中,我们创建了一个小型网络来建模Pima印第安人糖尿病二分类问题。这是一个可从UCI机器学习存储库获取的小型数据集。你可以下载数据集并将其保存到当前工作目录中,文件名为:pima-indians-diabetes.csv。

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

  1. 训练和验证数据集在训练周期的准确性图。
  2. 训练和验证数据集在训练周期的损失图。
代码语言:js
复制
# Visualize training history
from keras.modelsimport Sequential
from keras.layersimport Dense
import matplotlib.pyplot as plt
import numpy
# fix random seed for reproducibility
seed= 7
numpy.random.seed(seed)
# 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, kernel_initializer='uniform', activation='relu'))
model.add(Dense(8, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', 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['acc'])
plt.plot(history.history['val_acc'])
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()函数来训练你的模型。以及学习了如何用训练期间收集的历史数据绘图。

原文:http://machinelearningmastery.com/display-deep-learning-model-training-history-in-keras/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Keras中访问模型训练的历史记录
  • 可视化Keras的模型训练历史
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档