Keras 是一个主要由 Python 语言开发的开源神经网络计算库,最初由 François Chollet编写, 它被设计为高度模块化和易扩展的高层神经网络接口,使得用户可以不需要过多的专业知识就可以简洁、 快速地完成模型的搭建与训练。
Keras 库分为前端和后端,其中后端一般是调用现有的深度学习框架实现底层运算,如 Theano、 CNTK、 TensorFlow 等,前端接口是 Keras 抽象过的一组统一接口函数。
用户通过 Keras 编写的代码可以轻松的切换不同的后端运行,灵活性较大。 正是由于 Keras 的高度抽象和易用特性, 截止到 2019 年,Keras 市场份额达到了 26.6%,增长 19.7%, 在同类深度学习框架中仅次于 TensorFlow(数据来自 KDnuggets)。
TensorFlow 与 Keras 之间存在既竞争,又合作的交错关系,甚至连 Keras 创始人都在Google 工作。
早在 2015 年 11 月, TensorFlow 就被加入 Keras 后端支持。 从 2017 年开始,Keras 的大部分组件被整合到 TensorFlow 框架中。
2019 年, 在 TensorFlow 2 版本中, Keras被正式确定为 ensorFlow 的高层唯一接口 API, 取代了 TensorFlow 1 版本中自带的tf.layers 等高层接口。 也就是说, 现在只能使用 Keras 的接口来完成 TensorFlow 层方式的模型搭建与训练。 在 TensorFlow 中, Keras 被实现在 tf.keras 子模块中。
其实 Keras 可以理解为一套搭建与训练神经网络的高层 API 协议, Keras 本身已经实现了此协议, 安装标准的 Keras 库就可以方便地调用TensorFlow、 CNTK 等后端完成加速计算;在 TensorFlow 中,也实现了一套 Keras 协议,即 tf.keras, 它与 TensorFlow 深度融合,且只能基于 TensorFlow 后端运算, 并对TensorFlow 的支持更完美。
对于使用 TensorFlow 的开发者来说, tf.keras 可以理解为一个普通的子模块,与其他子模块,如 tf.math, tf.data 等并没有什么差别。
参考文献
Tensorflow 深度学习