Keras简介

Keras介绍

Keras是一个开放源码的高级深度学习程序库,使用Python编写,能够运行在TensorFlow或Theano之上。其主要作者和维护者是Google公司的工程师,以MIT开放源码方式授权。Keras使用最少的程序代码、花费最少的时间就可以建立深度学习模型,进行训练、评估准确率,并进行预测。相对来说,使用TensorFlow这样低级的链接库虽然可以完全控制各种深度学习模型的细节,但是需要编写更多的程序代码,花费更多时间进行开发。

TensorFlow功能强大,执行效率高,支持各种平台,然而属于低级的深度学习链接库,学习门槛高。Keras是高级的深度学习链接库,对初学者学习门槛低,可以很容易地建立深度学习模型,并且进行训练、预测。因为大部分读者没有接触过深度学习模型,如果一开始就学习TensorFlow,就要面对TensorFlow特殊的程序设计模式,并且还必须自行设计张量(矩阵)的运算,会有很大的挫折感。而先学习Keras可以让读者很容易地建立深度学习模型,并且训练模型,使用模型进行预测。等读者对深度学习模型有了一定认识后,再来学习TensorFlow就不会感觉那么困难了。

Keras是一个高层神经网络API,Keras由纯Python编写而成并基于Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:

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

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

Keras的工作方式

Keras是一个模型级的深度学习链接库,Keras只处理模型的建立、训练、预测等功能。深度学习底层的运行,例如张量运算,Keras必须配合后端引擎进行运算。目前Keras提供了两种后端引擎:Theano与TensorFlow。Keras程序员只需要专注于建立模型,至于底层操作细节,例如张量运算,Keras会帮你转化为Theano或TensorFlow相对指令。如果Keras用TensorFlow作为后端引擎,因为是以TensorFlow作为底层,所以TensorFlow具备的好处(例如跨平台与执行性能),这里都具备。

Keras的设计原则

  • 用户友好:Keras是为人类而不是天顶星人设计的API。用户的使用体验始终是我们考虑的首要和中心内容。Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量,同时,Keras提供清晰和具有实践意义的bug反馈。
  • 模块性:模型可理解为一个层的序列或数据的运算图,完全可配置的模块可以用最少的代价自由组合在一起。具体而言,网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是独立的模块,你可以使用它们来构建自己的模型。
  • 易扩展性:添加新模块超级容易,只需要仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得Keras更适合于先进的研究工作。
  • 与Python协作:Keras没有单独的模型配置文件类型(作为对比,caffe有),模型由python代码描述,使其更紧凑和更易debug,并提供了扩展的便利性。

Keras深度学习链接库特色

  • 简单快速地建立原型prototyping:Keras具备友好的用户界面、模块化设计、可扩充性。
  • 已经内建各种类神经网络层级,例如卷积层CNN、RNN,可以帮助我们快速建立神经网络模型。
  • 通过后端引擎Theano与TensorFlow,可以在CPU与GPU上运行。
  • 以Keras开发的程序代码更简洁、可读性更高、更容易维护、更具生产力。
  • Keras的说明文件非常齐全,官方网站上提供的范例也非常浅显易懂。

Keras程序设计模式

Keras的程序设计模式建立一个深度学习模型很简单,就好像做一个多层蛋糕。首先建立一个蛋糕架。然后不需要自己做每一层蛋糕,可以选择现成的蛋糕层,例如水果蛋糕层、巧克力蛋糕层等。我们可以指定每一层的内容,例如指定装饰水果种类与数量。只需要将每一层蛋糕加入蛋糕架上即可。最后就可以做出一个好吃又美观的多层蛋糕。建立模型很简单,只需先建立一个蛋糕架,然后将神经网络层一层一层加上去即可。

使用Keras建立多层感知器

Keras大致建立一个简单的多层感知器很简单,具体步骤如下。

  • 建立Sequential模型

Sequential模型是多个神经网络层的线性堆叠。可以想象Sequential模型是一个蛋糕架,接下来可以加入一层一层的蛋糕。

  • 加入“输入层”与“隐藏层”到模型中

Keras已经内建各种神经网络层(例如Dense层、Conv2d层等),只要在之前建立的模型上加入我们选择的神经网络层就可以了(就好像在“蛋糕架”加入“蛋糕层”一样简单)。

  • 加入“输出层”到模型

加入输出层到模型中,就好像再加入一层蛋糕。

以上基本就完成了多层感知器模型的建立。

Keras与TensorFlow比较

Keras与TensorFlow比较
 KerasTensorFlow
学习难易度简单比较困难
使用弹性中等
开发生产力中等
执行性能
适合用户初学者高级用户
张量(矩阵)运算不需要自行设计需自行设计

TensorFlow学习起来比较困难,大部分人没接触过深度学习模型,如果一开始就学习TensorFlow,就要面对TensorFlow特殊的程序设计模式,并且还必须自行设计张量(矩阵)的运算,会有很大的挫折感。而先学习Keras可以很容易建立深度学习模型,并且训练模型,使用模型进行预测。等到对深度学习模型有了一定认识后,再来学习TensorFlow就不会感觉那么困难了。

参考链接:

keras中文文档(官方)

keras中文文档(非官方)

莫烦keras教程代码

莫烦keras视频教程

一些keras的例子

Keras开发者的github

keras在imagenet以及VGG19上的应用

一个不负责任的Keras介绍(上)

一个不负责任的Keras介绍(中)

一个不负责任的Keras介绍(下)

使用keras构建流行的深度学习模型

Keras FAQ: Frequently Asked Keras Questions

GPU并行训练

常见CNN结构的keras实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值