其他
8种主流深度学习框架介绍
导读:近几年随着深度学习算法的发展,出现了许多深度学习框架。这些框架各有所长,各具特色。常用的开源框架有TensorFlow、Keras、Caffe、PyTorch、Theano、CNTK、MXNet、PaddlePaddle、Deeplearning4j、ONNX等。
作者:谢佳标
来源:大数据DT(ID:hzdashuju)
框架名称:TensorFlow 主要维护方:Google 支持的语言:C++/Python/Java/R 等 GitHub源码地址: https://github.com/tensorflow/tensorflow
框架名称:Keras 主要维护方:Google 支持的语言:Python/R GitHub源码地址: https://github.com/keras-team/keras
框架名称:Caffe 主要维护方:BVLC 支持的语言:C++/Python/Matlab GitHub源码地址: https://github.com/BVLC/caffe
框架名称:PyTorch 主要维护方:Facebook 支持的语言:C/C++/Python GitHub源码地址: https://github.com/pytorch/pytorch
框架名称:Theano 主要维护方:UdeM 支持的语言:Python GitHub源码地址: https://github.com/Theano/Theano
框架名称:CNTK 主要维护方:Microsoft 支持的语言:C++/Python/C#/.NET/Java/R GitHub源码地址: https://github.com/Microsoft/CNTK
框架名称:MXNet 主要维护方:DMLC 支持的语言:C++/Python/R等 GitHub源码地址: https://github.com/apache/incubator-mxnet
框架名称:PaddlePaddle 主要维护方:Baidu 支持的语言:C++/Python GitHub源码地址: https://github.com/PaddlePaddle/Paddle/
框架名称:Deeplearning4j 主要维护方:Eclipse 支持的语言:Java/Scala等 GitHub源码地址: https://github.com/eclipse/deeplearning4j
框架名称:ONNX 主要维护方:Microsoft/ Facebook 支持的语言:Python/R GitHub源码地址: https://github.com/onnx/onnx
TensorFlow支持Python、JavaScript、C ++、Java、Go、C#、Julia和R等多种编程语言。 TensorFlow不仅拥有强大的计算集群,还可以在iOS和Android等移动平台上运行模型。 TensorFlow编程入门难度较大。初学者需要仔细考虑神经网络的架构,正确评估输入和输出数据的维度和数量。 TensorFlow使用静态计算图进行操作。也就是说,我们需要先定义图形,然后运行计算,如果我们需要对架构进行更改,则需要重新训练模型。选择这样的方法是为了提高效率,但是许多现代神经网络工具已经能够在学习过程中改进,并且不会显著降低学习速度。在这方面,TensorFlow的主要竞争对手是PyTorch。
https://tensorflow.rstudio.com/tensorflow/ https://github.com/rstudio/tensorflow
高度模块化,搭建网络非常简洁; API简单,具有统一的风格; 易扩展,易于添加新模块,只需要仿照现有模块编写新的类或函数即可。
https://tensorflow.rstudio.com/keras/ https://github.com/rstudio/keras
以C++/CUDA/Python代码为主,速度快,性能高。 工厂设计模式,代码结构清晰,可读性和可拓展性强。 支持命令行、Python和Matlab接口,使用方便。 CPU和GPU之间切换方便,多GPU训练方便。 工具丰富,社区活跃。
源代码修改门槛较高,需要实现正向/反向传播。 不支持自动求导。 不支持模型级并行,只支持数据级并行。 不适合非图像任务。
支持GPU加速的张量计算; 方便优化模型的自动微分机制。
简洁易懂:PyTorch的API设计相当简洁一致,基本上是tensor、autograd、nn三级封装,学习起来非常容易。 便于调试:PyTorch采用动态图,可以像普通Python代码一样进行调试。不同于TensorFlow,PyTorch的报错说明通常很容易看懂。 强大高效:PyTorch提供了非常丰富的模型组件,可以快速实现想法。
CNTK性能较好,按照其官方的说法,它比其他的开源框架性能都要好。 适合做语音任务,CNTK本就是微软语音团队开源的,自然更适合做语音任务,便于在使用RNN等模型以及时空尺度时进行卷积。
https://github.com/microsoft/CNTK-R https://microsoft.github.io/CNTK-R/
灵活的编程模型:支持命令式和符号式编程模型。 多语言支持:支持C++、Python、R、Julia、JavaScript、Scala、Go、Perl等。事实上,它是唯一支持所有R函数的构架。 本地分布式训练:支持在多CPU/GPU设备上的分布式训练,使其可充分利用云计算的规模优势。 性能优化:使用一个优化的C++后端引擎实现并行I/O和计算,无论使用哪种语言都能达到最佳性能。 云端友好:可直接与S3、HDFS和Azure兼容。
ONNX使模型能够在一个框架中进行训练并转移到另一个框架中进行预测。 ONNX模型目前在Caffe2、CNTK、MXNet和PyTorch中得到支持,并且还有与其他常见框架和库的连接器。
http://onnx.ai/onnx-r/ https://github.com/onnx/onnx-r
本文摘编自《Keras深度学习:入门、实战与进阶》,经出版方授权发布。(ISBN:9787111691501)
点击上图了解及购买转载请联系微信:DoctorData
推荐语:十五年经验专家撰写,多位高管推荐;零基础入门深度学习并迅速成为实战高手,配套视频+PPT。
划重点👇
干货直达👇
在公众号对话框输入以下关键词查看更多优质内容!
读书 | 书单 | 干货 | 讲明白 | 神操作 | 手把手大数据 | 云计算 | 数据库 | Python | 爬虫 | 可视化AI | 人工智能 | 机器学习 | 深度学习 | NLP5G | 中台 | 用户画像 | 数学 | 算法 | 数字孪生
据统计,99%的大咖都关注了这个公众号👇