前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Keras:一个基于Python的深度学习库 | 给力的API | Tensorflow | 干货分享 | 解读技术

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

作者头像
用户7623498
发布2020-08-04 12:01:31
5080
发布2020-08-04 12:01:31
举报
文章被收录于专栏:决策智能与机器学习

|懒人阅读:你可以调用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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决策智能与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档