乐高积木:Keras
Keras是一个轻量级、高度模块化的高级深度学习库的包装,它支持多种后端作为其实现,包括Theano、TensorFlow、CNTK等。Keras允许快速建立深度学习网络原型,搭建和训练网络都十分的容易。通常十几行代码就可以完成一个网络的搭建和训练。所以Keras非常适用于上手学习神经网络。
但是Keras并非没有缺点。由于Keras是一种高度封装的库,所以对于神经网络内部知识的观察、学习和高自由度的调整都会受到较大的限制,而且Keras的训练速度也是比较慢的。这些缺点并不妨碍Keras成为上手学习神经网络的优秀功能库,而且许多夺得Kaggle大赛头筹的团队都是选择Keras作为其神经网络搭建工具。
Keras中也集成了许多预训练模型,包括VGG16、VGG19、InceptionV3、ResNet50等。Keras基于MIT许可证发布,可以在商业项目中免费使用。Keras具有以下重要特性:
- 支持相同的代码在CPU和GPU上无缝切换运行。
- 具有用户友好的API,可以快速开发深度学习的原型。
- 内置支持卷积神经网络和循环网络,分别用于计算机视觉和序列处理,并且支持两者的随意组合。
- 支持任意网络架构,能够构建任意深度学习模型。
Keras不处理任何张量操作、求微分等低层级的运算,在使用Keras时,需要搭配选择一个后端引擎作为Keras的张量库。目前Keras有三个后端实现:Tensorflow、Theano和CNTK。一般情况下推荐使用Tensorflow作为大部分深度学习的后端平台。Tensorflow自身封装了分别针对CPU和GPU高度优化的运算库,应用十分广泛并且可以应用于生产环境。
一个典型的Keras工作流程一般分为以下四步:
- 定义训练模型,输入张量和目标张量。
- 定义层组成的网络或者模型,将输入映射到目标。
- 配置学习过程,选择损失函数、优化器和需要监控的目标。
- 调用模型的
fit
方法在训练数据上进行迭代。