Keras:一个基于Python的深度学习库 | 给力的API | Tensorflow | 干货分享 | 解读技术

2020-08-04 12:01:31 浏览数 (1)

|懒人阅读:你可以调用keras库中的模块迅速实现各种深度学习模型,在tensorflow、Theano以及CNTK中均可支持, 适合新手体验、快速验证想法。

Keras使用手册(中文)传送门:http://keras-cn.readthedocs.io/en/latest/


用过的都说好

Keras号称是 TensorFlow 最好用、对新手最友好的 API

机器学习、深度学习的开源框架平台目前主要有Tensorflow(谷歌家的),Caffe,Theano,MXNet、Pytorch(facebook家的)等等,但是你发现你写一个简单的神经网络也需要很多行才能够写完,这个时候,就有很多的第三方插件来帮助你写网络,也就是说你用tensorflow要写10行,第三方插件1行代码就能搞定,因为插件封装了相应的函数

  • 适用场景

Keras 适合新手体验、快速验证想法,研究算法或修改底层建议直接编写模型,使用 TensorFlow、Theano等框架

  • 长板效应,优点
  1. backend(后端)强:受到了Tensorflow和Theano的支持,自然很有生命力;
  2. 便于上手,Keras可以当作黑箱子使用的人,上手非常容易,后面的栗子中可以看出;

文档齐全,论坛活跃,新功能更新不慢。

备注:backend为后端,指的是Keras依赖于完成底层的张量运算的软件包。

  • 人无完人,缺点
  1. 跑同样的模型比纯TensorFlow要慢,据说可能达到一倍;
  2. 由于模型封装的比较好,容易让人忽略原理,不深入学习模型,而且训练细节不能修改、penalty细节很难修改、不合适算法研究。扩展性一般。

基本介绍

Keras 之父是 Francois Chollet(见下图),已被谷歌挖走为Tensorflow背书,这是一个基于Python的深度学习库,作为一种高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,,特色如下:

  • 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
  • 支持CNN和RNN,或二者的结合
  • 无缝CPU和GPU切换

Keras适用的Python版本是:Python 2.7-3.6。

Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈。你也可以查看函数式模型来学习建立更复杂的模型。主要模块介绍如下:

  • Optimizers

顾名思义,Optimizers包含了一些优化的方法,比如最基本的随机梯度下降SGD,另外还有Adagrad、Adadelta、RMSprop、Adam,一些新的方法以后也会被不断添加进来

上面的代码是SGD的使用方法,lr表示学习速率,momentum表示动量项,decay是学习速率的衰减系数(每个epoch衰减一次),Nesterov的值是False或者True,表示使不使用Nesterov momentum。其他的请参考文档。

  • Objectives

这是目标函数模块,keras提供了mean_squared_error,mean_absolute_error

,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy这几种目标函数。这里binary_crossentropy 和 categorical_crossentropy也就是常说的logloss.

  • Activations

这是激活函数模块,keras提供了linear、sigmoid、hard_sigmoid、tanh、softplus、relu、softplus,另外softmax也放在Activations模块里(我觉得放在layers模块里更合理些)。此外,像LeakyReLU和PReLU这种比较新的激活函数,keras在keras.layers.advanced_activations模块里提供。

  • Initializations

这是参数初始化模块,在添加layer的时候调用init进行初始化。keras提供了uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal这几种。

  • layers

layers模块包含了core、convolutional、recurrent、advanced_activations、normalization、embeddings这几种layer。其中core里面包含了flatten(CNN的全连接层之前需要把二维特征图flatten成为一维的)、reshape(CNN输入时将一维的向量弄成二维的)、dense(就是隐藏层,dense是稠密的意思),还有其他的就不介绍了。convolutional层基本就是Theano的Convolution2D的封装。

  • Preprocessing

这是预处理模块,包括序列数据的处理,文本数据的处理,图像数据的处理。重点看一下图像数据的处理,keras提供了ImageDataGenerator函数,实现data augmentation,数据集扩增,对图像做一些弹性变换,比如水平翻转,垂直翻转,旋转等。

  • Models

这是最主要的模块,模型。上面定义了各种基本组件,model是将它们组合起来,下面通过一个实例来说明。


感受一下,使用流程及示例

视频内容问答示例:我们有一组 10 秒短视频组成的数据集,视频内容是人从事各种活动。一个深度学习模型将会观察这些视频的每一帧画面,进行理解,然后你可以用简短的自然语言问它视频内容。

神经网络解决方案可分为三个部分:视频矢量化、问题矢量化、关联两个矢量并进行分类实现准确问答,如图所示。

在Keras中创建深度学习模型,在概念上和拼乐高积木是很相似的,本示例中的方案在 Keras 上的直观结构如图所示。

完整代码如下:


最后的提醒,安装及注意事项

Keras使用了下面的依赖包,三种后端必须至少选择一种,我们建议选择tensorflow。

  • numpy,scipy
  • pyyaml
  • HDF5, h5py(可选,仅在模型的save/load函数中使用)
  • 如果使用CNN的推荐安装cuDNN

详细的Windows和Linux安装教程请参考“Keras新手指南”中给出的安装教程,非常清晰详细,传送门:http://keras-cn.readthedocs.io/en/latest/for_beginners/keras_windows/


授人以渔,资源分享

使用手册(英文)官方链接:https://keras.io/

使用手册(中文)官方链接:http://keras-cn.readthedocs.io/en/latest/


参考资料

CSDN-wepon_:http://blog.csdn.net/u012162613/article/details/45397033

Keras中文文档:http://keras-cn.readthedocs.io/en/latest/

Keras 之父讲解 Keras:http://news.ifeng.com/a/20170526/51167584_0.shtml

0 人点赞