深度学习可用的工具很多,例如,Google开发的深度学习平台TensorFlow。但是TensorFlow使用起来相对复杂,所以本教材使用易用性更好的Keras来讲解深度学习的具体实现。
Keras是由纯Python编写的深度学习框架,使用TensorFlow、Pytorch或者CNTK作为后端运行。用纯Python编写意味着所有的Keras代码都是通过Python语句实现的,可以通过Python的代码编辑工具打开源代码进行学习。在学习Python编程的过程中,阅读Keras经典模块的Python代码是一种非常好的学习方式。
在Keras开发团队写的官方文档中,他们详细说明了设计Keras时遵循的原则。
(1)用户友好
Keras是为人类而不是“天顶星人”①设计的API,用户的使用体验始终是我们考虑的首要和中心内容。Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API,能够极大减少一般应用下用户的工作量,同时,Keras还提供清晰和具有实践意义的bug反馈。
(2)模块性
模型可理解为一个层的序列或数据的运算图,完全可配置的模块可以用最少的代价自由组合在一起。具体而言,网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是独立的模块,你可以使用它们来构建自己的模型。
(3)易扩展性
添加新模块超级容易,只需要仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得Keras更适合于先进的研究工作。
(4)与Python协作
Keras没有单独的模型配置文件类型(作为对比,caffe有),模型由Python代码描述,这样可以使其更紧凑和更易debug,也更易扩展。
作为一种高级深度学习工具,Keras构造深度学习网络简单直接、容易阅读,同时它能够自动构建层与层之间的连接,更便于学习者体会深度学习的能力。选用Keras作为深度学习的入门工具的原因如下。