当前位置: 首页 > 科技观察

8个主流深度学习框架介绍

时间:2023-03-12 06:27:12 科技观察

框架名称:TensorFlow主要维护者:Google支持语言:C++/Python/Java/R等GitHub源码地址:https://github.com/tensorflow/tensorflow框架名称:KerasMain维护者:Google支持语言:Python/RGitHub源地址:https://github.com/keras-team/keras框架名称:Caffe主要维护者:BVLC支持语言:C++/Python/MatlabGitHub源地址:https://github.com/BVLC/caffe框架名称:PyTorch主要维护者:Facebook支持语言:C/C++/PythonGitHub源地址:https://github.com/pytorch/pytorch框架名称:Theano主要维护者:UdeM支持语言:PythonGitHub源码地址:https://github.com/Theano/Theano框架名称:CNTK主要维护者:Microsoft支持语言:C++/Python/C#/.NET/Java/RGitHub源码地址:https://github.com/Microsoft/CNTK框架名称:MXNet主要维护者:DMLC支持语言:C++/Python/R等GitHub源码地址:https://github.com/apache/incubator-mxnet框架名称:PaddlePaddle主要维护者:百度支持语言:C++/PythonGitHub源码地址:https://github.com/PaddlePaddle/Paddle/Framework名称:Deeplearning4j主要维护者:Eclipse支持语言:Java/Scala等GitHub源码地址:https://github.com/eclipse/deeplearning4j框架名称:ONNX主要维护者:Microsoft/Facebook支持语言:Python/RGitHub源码地址:https://github.com/onnx/onnx以下是对各个框架的概述,以便读者了解各个框架framework一个简单的认知,具体的安装和使用方法本文不再赘述1.TensorFlowGoogle的TensorFlow可以说是当今最流行的开源深度学习框架,可以用于各种深度学习相关的任务。TensorFlow=Tensor+Flow,Tensor为张量,代表N维数组;Flow就是流,代表基于数据流图的计算。TensorFlow是目前深度学习的主流框架,其主要特点如下。TensorFlow支持Python、JavaScript、C++、Java、Go、C#、Julia、R等多种编程语言,TensorFlow不仅拥有强大的计算集群,还可以在iOS、Android等移动平台上运行模型。TensorFlow编程入门很困难。初学者需要仔细考虑神经网络的架构,正确评估输入和输出数据的维度和数量。TensorFlow使用静态计算图运行。也就是说,我们需要先定义图,然后运行计算,如果我们需要对架构进行更改,我们需要重新训练模型。选择这种方法是为了提高效率,但许多现代神经网络工具已经能够在学习过程中进行改进,而不会显着减慢学习速度。在这方面,TensorFlow的主要竞争对手是PyTorch。RStudio提供了R和TensorFlow的API接口,RStudio官网和GitHub上也提供了TensorFlow扩展包的学习资料。https://tensorflow.rstudio.com/tensorflow/https://github.com/rstudio/tensorflow2.KerasKeras对于新手用户来说是一个非常友好和简单的深度学习框架。如果你想快速入门深度学习,Keras会是一个不错的选择。Keras是一种高级的TensorFlow集成API,可以轻松地与TensorFlow集成。Keras可以在高层调用TensorFlow、CNTK、Theano,更多优秀的库也在陆续支持中。Keras的特点是能够快速建立模型,这是高效科学研究的关键。Keras的基本特点如下:高度模块化,搭建网络非常简单;API简单,风格统一;易于扩展,易于添加新模块,只需在现有模块的基础上编写新的类或函数即可。RStudio提供了R和Keras之间的API接口,RStudio官网和GitHub也提供了Keras扩展包的学习资料。https://tensorflow.rstudio.com/keras/https://github.com/rstudio/keras3.CaffeCaffe是由人工智能科学家贾扬清博士期间开发的。就读于加州大学伯克利分校,主要基于C++/CUDA代码较早的深度学习框架之一,早于TensorFlow、MXNet、PyTorch等,Caffe需要编译安装。它支持命令行、Python和Matlab界面。它可以很容易地与单台机器上的多张卡或多台机器上的多张卡一起使用。Caffe的基本特征如下。主要基于C++/CUDA/Python代码,速度快,性能高。工厂设计模式,代码结构清晰,可读性和扩展性强。支持命令行、Python和Matlab界面,简单易用。CPU和GPU切换方便,多GPU训练方便。丰富的工具和活跃的社区。同时,Caffe的缺点也很明显,主要有以下几点。源码修改门槛高,需要实现正向/反向传播。不支持自动微分。不支持模型级并行,只支持数据级并行。不适用于非成像任务。Caffe虽然提供了Matlab和Python接口,但目前还不支持R语言。caffeR为Caffe提供了一系列的封装功能,让用户可以在R语言上运行Caffe,包括数据预处理和网络设置,以及训练过程的监控和评估。该包暂无CRAN版本,感兴趣的读者可以在GitHub上找到caffeR包的安装和使用相关内容。https://github.com/cnaumzik/caffeR4.PyTorchPyTorch是Facebook团队于2017年1月发布的深度学习框架,虽然晚于TensorFlow、Keras等框架,但自发布以来受到了更多的关注。它在不断上升,目前在GitHub上的热度已经超过了Theano、Caffe、MXNet等框架。PyTroch主要提供以下两个核心功能:支持GPU加速的Tensor计算;有利于模型优化的自动微分机制。PyTorch的主要优点如下。简洁易懂:PyTorch的API设计相当简洁一致。基本上就是tensor、autograd、nn的三级封装,非常容易学。易于调试:PyTorch使用动态图,可以像普通Python代码一样进行调试。与TensorFlow不同,PyTorch的错误描述通常很容易理解。强大高效:PyTorch提供了一套非常丰富的模型组件,可以快速实现想法。5.TheanoTheano诞生于2008年,由蒙特利尔大学LISA实验室开发维护。它是一个高性能的符号计算和深度学习框架。它完全基于Python,致力于数学表达式的定义、求值和优化。得益于GU的透明使用,Theano特别适合包含高维数组的数学表达式,计算效率比较高。因为Theano出现得比较早,后来又出现了一批基于Theano的深度学习库,完成了对Theano的上层封装和功能扩展。在这些派生库中,比较有名的是Keras,这本书就是要学习的。Keras将一些基础组件封装成模块,让用户在编写、调试和阅读网络代码时更加清晰。6.CNTKCNTK(MicrosoftCognitiveToolkit)是微软的开源深度学习工具包,它将神经网络描述为通过有向图进行的一系列计算步骤。在有向图中,叶节点代表输入值或网络参数,其他节点代表对其输入的矩阵运算。CNTK允许用户非常轻松地实现和组合流行的模型,包括前馈神经网络(DNN)、卷积神经网络(CNN)和递归神经网络(RNN、LSTM)。CNTK和目前大多数框架一样,实现了自动推导,使用随机梯度下降法进行优化。CNTK的基本特征如下。CNTK具有更好的性能。根据其官方说法,其性能优于其他开源框架。它适用于语音任务。CNTK最初由微软语音团队开源。自然更适合语音任务,在使用RNN、时空尺度等模型时方便进行卷积。Microsoft开发的CNTK-R包提供了R和CNTK之间的API接口。有兴趣的读者可以到以下网站了解。https://github.com/microsoft/CNTK-Rhttps://microsoft.github.io/CNTK-R/7.MXNetMXNet框架允许混合使用符号和命令式编程,以最大限度地提高效率和生产力。MXNet的核心是一个动态依赖调度程序,它可以自动并行化运行中的符号和命令操作。它的图形优化层使符号执行速度更快,内存效率更高。MXNet的基本特征如下。灵活的编程模型:支持命令式和符号式编程模型。多语言支持:支持C++、Python、R、Julia、JavaScript、Scala、Go、Perl等,事实上,它是唯一支持所有R功能的框架。本地分布式训练:支持在多个CPU/GPU设备上进行分布式训练,充分发挥云计算的规模优势。性能优化:使用经过优化的C++后端引擎实现并行I/O和计算,无论使用何种语言都能达到最佳性能。云友好:直接兼容S3、HDFS和Azure。8.ONNXONNX(OpenNeuralNetworkeXchange,开放神经网络交换)项目由微软、亚马逊、Facebook、IBM等公司联合开发,旨在寻找呈现开放格式的深度学习模型。ONNX简化了人工智能中不同工作方式之间模型迁移的过程,并具有各种深度学习框架的优点。ONNX的基本特点如下。ONNX使模型能够在一个框架中进行训练,然后转移到另一个框架中进行预测。Caffe2、CNTK、MXNet和PyTorch目前支持ONNX模型,并且还有连接到其他常见框架和库的连接器。onnx-r包提供了R和ONNX之间的API接口。有兴趣的读者可以到以下网站了解。http://onnx.ai/onnx-r/https://github.com/onnx/onnx-r作者简介:谢家飚,资深AI技术专家、数据挖掘专家,拥有超过14年的技术研究以及开发和管理经验。精通Python、Keras等深度学习框架,在数据挖掘和人工智能技术领域有着非常深厚的积累。连续6年(2017~2022)被微软授予DataScienceandAIMVP。资深R语言技术专家,“中国领域统计研究会大数据统计分会”首届理事。历届中国R语言与数据科学大会特邀演讲嘉宾,受邀在国内多所高校举办以数据为主题的公开讲座。本文节选自《Keras深度学习:入门、实战与进阶》,经发布者授权发布。(书号:9787111691501)