深度学习领域发展迅猛,江湖风起云涌。在此,咪博士为大家细细盘点、比较,各大深度学习框架。也祝大家都能训出好模型,调出好参数。
以下是咪博士的观点,供大家参考:
下面是详细的比较和说明:
一、推荐使用
Keras
受到 Torch 启发,Keras 提供了简单易用的 API 接口,特别适合初学者入门。其后端采用 TensorFlow, CNTK,以及
Theano。另外,Deeplearning4j 的 Python 也是基于 Keras 实现的。Keras 几乎已经成了 Python
神经网络的接口标准。
Gluon
亚马逊 (Amazon) 和 微软 (Microsoft) 于 2017 年 10 月联合推出的深度学习 API。Gluon 类似
Keras,提供了简单易用的 API 接口。但和 Keras 不一样的地方是,Gluon 还支持动态计算图(对自然语言处理特别有用)。Gluon
后端目前采用 MXNet,未来还将支持微软的 CNTK。
TensorFlow
谷歌 (Google) 大厂出品,追随者众多。相比其他框架,TensorFlow 速度较慢,但它提供的 TensorBoard 可视化工具还是很不错的。
MXNet
已被 亚马逊 (Amazon) 选为 AWS 上的深度学习框架,支持动态图计算。MXNet 有许多中国开发者,因而有非常良好的中文文档支持。Gluon 接口使得 MXNet 像 Keras 一样简单易用。
二、值得一试
PyTorch
背后金主是 脸书 (Facebook) ,同样支持动态计算图,提供很好的灵活性,适合研究。
Caffe2
同样是 脸书 (Facebook) 出品,为生产环境设计,提供在各种平台(包括移动设备)的运行时。
Deeplearning4j
与其他(大多数)基于 Python 的深度学习框架不同,Deeplearning4j 基于 Java 开发,与 Hadoop, Spark
生态结合得很好。尤其令人称道的是其优秀的文档,官司方文档直接就有中文版本。另外,虽然是面向 Java 的框架,Deeplearning4j
也提供了 Python 的接口(基于 Keras 实现)
ConvNetJS
基于 Javascript 的深度学习框架,可以在浏览器中训练深度神经网络。最重要的用途是帮助学习 Deep Learning
三、不推荐
Theano, Lasagne, 以及 Blocks
Yoshua Bengio 于 2017 年 09 月宣布不再维护 Theano,所以这个项目事实上已经宣告死亡了。其他基于 Theano 的库,如 Lasagne 和 Blocks,也可以散了。
Torch
虽然设计精良(Keras 就是参考 Torch 设计的),但它基于 Lua 语言,太过小众了。而且 Facebook 已经推出了 Python 版本的 PyTorch 了。
Caffe
Caffe2 已经正式发布了,彻底取代 Caffe 只是时间问题罢了。
CNTK
微软出品,授权协议有一些特别,而且似乎也没有什么特别亮眼的地方。
Chainer
曾经是动态计算图的首选框架,特别适用于自然语言处理。但是,现在许多其他的框架,如 MXNet, PyTorch, 以及 DyNet 也支持该特性,所以 Chainer 的这一优势也就不复存在了。
Paddle
百度的深度学习框架,受众太小。
DSSTNE
曾是亚马逊的深度学习引擎,但是很小众,而且现在亚马逊又选择了 MXNet,所以 DSSTNE 的前途就更渺茫了。
DyNet
源自卡耐基梅隆大学,支持动态计算图,但是太小众了。
BigDL
Intel 基于 spark 的深度学习库,但只能运行在 Intel 芯片之上。
Neon
据说速度很快,但太过小众,而且发展还不完善,许多特性还不支持。
参考