《 Python深度学习》一书

图片 深度学习是一组机器学习算法,它们使用包含许多非线性变换的体系结构为数据中的高级抽象建模。 同意,这句话听起来很有威胁。 但是,如果创建了Keras(使用神经网络的最强大库)的Francois Schollay谈到深度学习,一切都不会那么令人恐惧。 通过来自各个领域的实践示例来体验深度学习。 本书分为两个部分:第一部分提供了理论基础,第二部分致力于解决特定问题。 这不仅使您可以了解DL的基础知识,还可以学习如何在实践中利用新的机会。

学习是终生的旅程,尤其是在人工智能领域,其中未知数多于确定性。 内部摘录自“使用Keras和TensorBoard回调研究和监控深度学习模型”。

关于这本书


这本书是为想要从头开始学习深度学习技术或扩展其知识的每个人编写的。 机器学习工程师,软件开发人员和学生将在这些页面上找到很多价值。

本书提供了有关深度学习的实际实践研究。 我们尝试避免使用数学公式,而是倾向于使用代码片段来解释定量概念,并形成对机器和深度学习基本概念的实际理解。

您将看到30多个程序代码示例,其中包含有关使用深度学习解决特定问题所需了解的一切的详细注释,实用建议和简单的广义解释。

这些示例使用用Python编写的Keras深度学习框架和TensorFlow库作为内部机制。 Keras是最流行和增长最快的深度学习框架之一。 通常,它被推荐为初学者学习深度学习的最成功工具。

阅读本书之后,您将清楚地了解什么是深度学习,何时适用以及其局限性。 您将了解解释和解决机器学习问题的标准流程,以及如何处理常见问题。 您将学习如何使用Keras解决实际问题-从模式识别到自然语言处理:图像分类,时间预测,情绪分析,图像和文本生成等等。

使用Keras和TensorBoard回调研究和监控深度学习模型


在本节中,我们将研究在培训和管理过程中更完整地访问模型内​​部机制的方法。 通过调用model.fit()或model.fit_generator()在大型数据集上启动训练过程并持续数十个时代,这类似于纸飞机的发射:给人一种初始冲动,您不再控制其飞行路径或着陆点。 为避免产生负面结果(以及造成纸飞机的损失),最好不要使用纸飞机,而应使用可控制的无人机来分析环境,并将其信息发送回操作员,并根据其当前状态自动控制舵。 此处将介绍的技术将把对model.fit()的调用从一架纸飞机转变为能够评估其状况并及时执行控制动作的智能自主无人机。

在训练过程中使用回调影响模型


模型训练的许多方面无法预先预测。 例如,无法预先预测在测试集上提供最佳损耗值的时期数。 在到目前为止引用的示例中,已使用了具有足够多时代的学习策略。 因此,当第一次执行第一次运行以找出所需的训练时期数,然后从最初选择的最佳训练时期数开始第二次训练时,便达到了再训练的效果。 当然,这是一个相当浪费的策略。

事实证明,测试集上的损失估计值不再提高时,最好停止学习。 可以使用Keras回调机制来实现。 回调是一个对象(实现特定方法的类的实例),该对象通过调用fit传递给模型,并且模型将在学习过程中的不同时刻对其进行调用。 他可以访问有关模型状态及其质量的所有信息,并且可以执行以下操作:中断训练,保存模型,加载不同的权重集或以其他方式更改模型状态。

以下是一些使用回调的示例:

  • 将模型状态固定在控制点上-在训练期间在不同点保存当前模型权重;
  • 提早停止-当测试数据损失的估计值停止改善时中断训练(当然,保持训练期间获得的模型的最佳版本);
  • 在学习过程中动态调整某些参数的值,例如优化程序的学习步骤;
  • 在训练过程中记录训练和测试数据集的等级,或在模型更新时可视化模型获得的表示-您已经熟悉的Keras中的进度条就是回调!

keras.callbacks模块包含许多内置的回调。 这是一个不完整的清单:

keras.callbacks.ModelCheckpoint keras.callbacks.EarlyStopping keras.callbacks.LearningRateScheduler keras.callbacks.ReduceLROnPlateau keras.callbacks.CSVLogger 

让我们看一下其中的一些以了解如何使用它们:ModelCheckpoint,EarlyStopping和ReduceLROnPlateau。

ModelCheckpoint和EarlyStopping回调

如果监视的目标指标在给定的时间内没有改善,则可以使用EarlyStopping回调来中断学习过程。 例如,此回调将允许您在再训练效果开始后中断训练,从而避免在更少的时代重新训练模型。 此回调通常与ModelCheckpoint结合使用,它允许您在训练期间保存模型的状态(并且,如有必要,仅保存最佳模型:在时代末期达到更好质量的模型版本):

图片

ReduceLROnPlateau回调

当测试数据的损失不再减少时,可以使用此回调来降低学习速度。 减少或增加损失曲线拐点处的训练速度是一种在训练过程中突破局部最小值的有效策略。 以下示例演示了ReduceLROnPlateau回调的用法:

图片

设计回调

如果在培训期间您需要执行某些内置回调未提供的某些特殊操作,则可以编写自己的回调。 回调是通过从keras.callbacks.Callback类继承而实现的。 您可以使用语音名称实现以下任何一种方法,这些名称将在适当的时候被调用

图片

所有这些方法都由参数日志调用-字典包含有关先前软件包,时代或培训周期的信息:培训和验证指标等。 此外,回调还可以访问以下属性:

  • self.model-导致此回调的模型实例;
  • self.validation_data-作为验证数据传递给fit方法的值。

这是一个非标准回调的简单示例,该回调将每个时代结束后从测试集中的第一个样本计算出的模型所有层的激活保存到磁盘(如Numpy数组):

图片

这就是您需要了解的有关回调的所有信息,其他所有信息都是技术细节,您可以轻松找到自己的信息。 现在,您可以在培训期间记录任何信息或控制Keras模型。

关于作者


图片 Francois Chollet在加利福尼亚州山景城的Google从事深度学习。 他是深度学习库Keras的创建者,也是TensorFlow机器学习框架项目的成员。 他还从事机器学习领域的研究,专注于模式识别以及机器学习在形式推理中的应用。 他在该领域的主要会议上发表讲话,包括计算机视觉和模式识别会议(CVPR),神经信息处理系统会议和研讨会(NIPS),国际学习表示会议(ICLR)等。 。

»这本书的更多信息可以在出版商的网站上找到
» 目录
» 摘录

小贩20%优惠券-Python 深度学习

Source: https://habr.com/ru/post/zh-CN413291/


All Articles