专栏首页ATYUN订阅号在Keras中展示深度学习模式的训练历史记录

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

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

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

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

让我们开始吧。

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

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

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

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

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

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

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

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

['acc','loss','val_acc','val_loss']

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

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

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

或者更多。

可视化Keras的模型训练历史

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

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

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

  1. 训练和验证数据集在训练周期的准确性图。
  2. 训练和验证数据集在训练周期的损失图。
# 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/

本文分享自微信公众号 - ATYUN订阅号(atyun_com),作者:于翔宇

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 语言生成实战:自己训练能讲“人话”的神经网络(下)

    在昨天的学习当中,我们了解了培养一个会说话的语言生成模型所需要的如何创建数据集这一模块,今天我们继续学习构建语言生成模型。

    AiTechYun
  • 英特尔和飞利浦利用至强芯片极大加速AI医疗扫描分析

    预计到2022年,全球AI将达到2000亿美元,如果目前的趋势持续下去,医疗保健将成为该市场的重要组成部分。这并不奇怪,AI可能降低行政成本,减少患者等待时间,...

    AiTechYun
  • MIT等研究团队开发交互式工具ATMSeer,可查看和控制AutoML系统工作流程

    麻省理工学院等研究团队开发了一种交互式工具,首次让用户看到并控制自动机器学习系统的工作方式。目的是建立对这些系统的信心,并找到改进它们的方法。

    AiTechYun
  • 比特币突破8000美元,我们找到了用DL预测虚拟货币价格的方法

    选自GitHub 作者:David Sheehan 机器之心编译 截至 11 月 22 日,比特币的价格再创历史新高(约 1 比特币兑 8120 美元),在惊讶...

    机器之心
  • TensorFlow从1到2(九)迁移学习

    迁移学习是这两年比较火的一个话题,主要原因是在当前的机器学习中,样本数据的获取是成本最高的一块。而迁移学习可以有效的把原有的学习经验(对于模型就是模型本身及其训...

    俺踏月色而来
  • 语言生成实战:自己训练能讲“人话”的神经网络(下)

    在昨天的学习当中,我们了解了培养一个会说话的语言生成模型所需要的如何创建数据集这一模块,今天我们继续学习构建语言生成模型。

    AiTechYun
  • NVIDIA Deepstream笔记(五):迁移学习

    深度学习是全球视频分析应用增长的动力,开发者们越来越多的在基于计算机视觉应用中使用深度学习了。在Github或者其他地方已经开始浮现公开的代码库和(网络)模型...

    GPUS Lady
  • 入门 | 简述迁移学习在深度学习中的应用

    机器之心
  • 深度学习应用不再举步维艰,迁移学习成最大功臣

    在Cortex这一平台上,有不少用户发布了基于深度学习的新一代产品,并且与之前不同的是,这些产品并非都是使用独一无二的模型架构创建的。

    AI科技评论
  • 独家 | 教你使用简单神经网络和LSTM进行时间序列预测(附代码)

    下载波动性标准普尔500数据集,时间范围是:2011年2月11日至2019年2月11日。我的目标是采用ANN和LSTM来预测波动性标准普尔500时间序列。

    数据派THU

扫码关注云+社区

领取腾讯云代金券