一、Scikit-learn
优点:Scikit-learn 是一个完整的面向机器学习算法的计算库,内建了常见的传统机器学习算法支持,文档和案例也较为丰富;
缺点:Scikit-learn 并不是专门面向神经网络而设计的,不支持 GPU 加速,对神经网络相关层的实现也较欠缺。
(Scikit-learn是很多人入门深度学习的比较合适作第一个框架)
二、Caffe
优点:Caffe 的主要开发语言是 C++,也提供 Python 语言等接口,支持 GPU 和 CPU;
缺点:主要面向使用卷积神经网络的应用场合,并不适合其它类型的神经网络的应用;
(由于开发时间较早,在业界的知名度较高,2017年Facebook 推出了 Caffe 的升级版本 Cafffe2,Caffe2 目前已经融入到 PyTorch 库中。)
三、Torch
优点: Torch 是一个非常优秀的科学计算库,基于较冷门的编程语言 Lua 开发。Torch 灵活性较高,容易实现自定义网络层,这也是 PyTorch 继承获得的优良基因;
缺点:由于 Lua语言使用人群较少,Torch 一直未能获得主流应用。
四、PyTorch
优点:PyTorch 是 Facebook 基于原 Torch 框架推出的采用 Python 作为主要开发语言的深度学习框架。PyTorch采用命令式编程,使得搭建网络和调试网络非常方便。在 PyTorch 1.0 版本后,原来的 PyTorch 与 Caffe2进行了合并,弥补了 PyTorch 在工业部署方面的不足。
(总的来说,PyTorch 是一个非常优秀的深度学习框架。)
五、Keras
优点:Keras 是一个基于 Theano 和 TensorFlow 等框架提供的底层运算而实现的高层框架,提供了大量快速训练、测试网络的高层接口。对于常见应用来说,使用 Keras 开发效率非常高;
缺点:由于没有底层实现,需要对底层框架进行抽象,运行效率不高,灵活性一般。
六、TensorFlow
优点:TensorFlow 是 Google 于 2015 年发布的深度学习框架,最初版本只支持符号式编程。得益于发布时间较早,以及 Google 在深度学习领域的影响力,TensorFlow 很快成为最流行的深度学习框架。2019年,Google 推出 TensorFlow 2 正式版本,将以动态图优先模式运行,弥补了 TensorFlow 在上手难度方面的不足,使得用户既能轻松上手 TensorFlow 框架,又能无缝部署网络模型至工业系统,已获得业界的广泛认可。
总结:目前来看,TensorFlow 和 PyTorch 框架是业界使用最为广泛的两个深度学习框架,TensorFlow 在工业界拥有完备的解决方案和用户基础,PyTorch 得益于其精简灵活的接口设计,可以快速搭建和调试网络模型,在学术界获得好评如潮。