机器学习:Kreas在机器学习中的应用实践—— 《Python深度学习》读书笔记(7)

版权声明:随便转载,互相学习,注明来源即可,不想注明也没事 https://blog.csdn.net/yangwohenmai1/article/details/89075848

本系列文章是对《Python深度学习》这本书阅读过程中,提炼出来的读书笔记。

《Python深度学习》这本书的作者是Keras之父,也是Tensorflow框架的贡献者,本书的特点是,作者从一个编程学习者的角度来描述机器学习,而不是堆上来复杂的数学公式和函数变换。所有的数学理论或者公式,都用程序的方式描述出来,对于没有数学功底的开发者来说是一个很大的福利。不过当然,后期还是离不开数学,但作为入门来说这本书就相当的好了。

本章主要是Keras之父自己的一个小广告,讲的是Keras函数接口的用法。

本章知识点:

Sequential和Inception

Sequential API 适用于简单的线性层堆叠的网络。Inception适用多个并行的分支处理,多种不同模型合并起来进行预测,如多头和多输入。

残差连接

所谓残差连接,基本就是和LSTM网络本质是一样的,残差连接的概念是,让前面某层的输出,作为后面某层的输入,使得前面的输出没有和相邻的激活层连接,而是和后面的激活层叠加(这里要求输出形状相同,如果前面的输出和后面的激活层形状不同,通过一个线性变换使得形状相同),这就好像上篇文章中介绍的LSTM网络中时间轴方向上的数据传送通道。为什么有残差连接这种东西呢,本质上是为了解决深度学习的两个共性问题。见下文。

深度学习的共性问题:梯度消失,表示瓶颈

深度学习有两个瓶颈问题:梯度消失(爆炸),表示瓶颈

梯度消失:原因有很多,比如网络层次越来越深,前方的误差值在传递过程中越来越小,后面的网络已经无法感知前方的误差。可以参考这篇文章:https://www.jianshu.com/p/09643588f373

表示瓶颈:在Sequential模型中,层与层之间时线性堆叠的,每个连续表示层都是建立在前一层之上,因此如果其中某一层特征维度太低,那么模型将会受限于该层激活中能够塞入多少信息,这一层就是信息瓶颈。

对于上述两种问题,使前面某层的输入直接跳到后面某层,即可以有效地避开表示瓶颈层,又可以减少因为多次求导而造成的梯度消失的问题。这就是残差连接的意义。

Keras框架的常用函数参数

callbacks:这个函数可以随时访问网络的训练状态,随时获得当前网络训练的各种参数,以便后续调整模型。

ModelCheckpoint:保存网络训练过程中的参数,训练出来的网络权重

EarlyStopping:如果模型性能不再有提升,终止训练

ReduceLROnPlateau:监控模型验证损失数据,验证损失不再降低的时候,调整学习率大小跳出局部最优。

TensorBoard:一个Tensorflow的可视化IDE,了解即可

Keras提升性能和优化的几种方法

1.数据标准化:使得网络模型看到的不同数据样本之间更加相似,利于对新数据的泛化

2.批标准化:训练时在内部保存已读取每批数据均值和方差的指数移动平均值。效果是有助于梯度传播,类似残差连接,允许更深的网络深度。

3.超参数优化

4.多模型集成

猜你喜欢

转载自blog.csdn.net/yangwohenmai1/article/details/89075848
今日推荐