主流深度学习框架
框架发展历程Google - TensorFlowGoogle - KerasBVLC - Caffe/Caffe2Facebook - PyTorchDMLC - MXNet框架发展历程
Google - TensorFlow
优点
(1)最流行的深度学习框架,社区强大
(2)功能强大
(3)在生产模型和可扩展性方面比较好,适合生产环境
(4)使用 TensorBoard 可视化训练
(5)通过 TensorFlow serving 容易实现生产部署
缺点
(1)过于复杂的系统设计
(2)频繁变动的接口,向后兼容性不好
(3)接口设计过于晦涩难懂,有图、会话、命名空间等诸多抽象概念难以理解
(4)文档混乱脱节
(5)学习成本,开发成本高
(6)静态图
Google - Keras
缺点(1)过度封装导致丧失灵活性,运行缓慢
(2)基于第三方框架,更像深度学习接口而不是深度学习框架
(3)主要是在调用接口,获取底层的数据信息时过于困难,很难学习到深度学习的内容优点
(1)高层神经网络API,最易上手
(2)为支持快速实验而生,能够把想法迅速转换为结果
(3)提供了一致而简洁的API, 极大地减少用户的工作量,避免用户重复造轮子
BVLC - Caffe/Caffe2
缺点
(1)文档不够完善
(2)因为设计,缺少灵活性,不同于Keras太多的封装
(3)扩展难、依赖众多环境难以配置、应用局限
(4)不适合非图像任务
优点
(1)清晰、高效的深度学习框架,核心语言是C++
(2)易用性、简洁明了的源码、快速的原型设计
(3)性能优异,几乎全平台支持(Caffe2),适合生产环境
Facebook - PyTorch
缺点
(1)可视化需要第三方
(2)生产部署需要 API 服务器
优点
(1)简洁优雅且高效快速,易用
(2)活跃的社区,完整的文档,循序渐进的指南
(3)动态图
DMLC - MXNet
缺点
(1)文档略混乱
优点
(1)超强的分布式支持,明显的内存、显存优化
(2)语言支持最多,适合AWS云平台使用
(3)分布式环境下,明显优于其他框架的扩展性能