Tensorflow比较灵活,但是它提供的操作比较低级,于是许多封装库应运而生。
slim
导入方式
import tensorflow as tf
import tensorflow.contrib.slim as slim
这个库直接放在contrib模块中,不像tflearn、tflayer、keras都有自己独立的pip包和官方文档。
keras
优点:
- 时间久远
- 社区活跃,文档齐全
- 多种后端:Theano、Tensorflow、MXNet
- 跨平台:不管是CPU还是GPU,不管是Tensorflow还是别的后端,它都对它们进行了封装
- 封装完美:类似sklearn,封装了各种细节
- 学习成本低,编程简单
缺点:
- 运行效率低,这个问题随着时间是会慢慢改善的
国外测评说是因为 Keras 最开始只是为了 Theano 而开发的,TensorFlow发布后才写支持TensorFlow的代码,所以为了兼容牺牲了效率 - 封装过于严密导致可扩展性差
如果想要快速上手,keras是最简单实用的。
tflearn
优点:
- 高效:比Keras高效,但是比不上TensorLayer高效
缺点:
- 维护不好,没有中文文档,作者人数较少,开发力量薄弱
tensorlayer
优点:
- 灵活,可以很简单地实现动态网络结构(Neural Modular Network)
- 文档齐全,社区活跃。提供了 Google TensorFlow 官网的模块化实现
- 封装完善:提供scikit-learn式的API,和专业级的API,适合新手到老手过渡
缺点:
- 发布时间较晚(16年8月份)
最后
把Tensorflow、Pytorch、MXNet、Caffe比作操作系统,那么Keras就像Java,虽然慢些但是跨平台封装好。TensorLayer就像C#,运行快,但是只适用于一个平台。
如果只是想在网络架构、应用方面创新,keras无疑是最佳选择。