懒人阅读:你可以调用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等框架
长板效应,优点
backend(后端)强:受到了Tensorflow和Theano的支持,自然很有生命力;
便于上手,Keras可以当作黑箱子使用的人,上手非常容易,后面的栗子中可以看出;
文档齐全,论坛活跃,新功能更新不慢。
备注:backend为后端,指的是Keras依赖于完成底层的张量运算的软件包。
人无完人,缺点
跑同样的模型比纯TensorFlow要慢,据说可能达到一倍;
由于模型封装的比较好,容易让人忽略原理,不深入学习模型,而且训练细节不能修改、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
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/
参考资料
Keras中文文档:http://keras-cn.readthedocs.io/en/latest/
Keras 之父讲解 Keras:http://news.ifeng.com/a/20170526/51167584_0.shtml
善用智能之道:行业动态、技术前沿、产业服务,欢迎关注联系:九三智能控
领取专属 10元无门槛券
私享最新 技术干货