导读:近几年随着深度学习算法的发展,出现了许多深度学习框架。这些框架各有所长,各具特色。常用的开源框架有tensorflow、keras、caffe、pytorch、theano、cntk、mxnet、paddlepaddle、deeplearning4j、onnx等。
框架名称:tensorflow
主要维护方:google
支持的语言:c++/python/java/r 等
框架名称:keras
主要维护方:google
支持的语言:python/r
框架名称:caffe
主要维护方:bvlc
支持的语言:c++/python/matlab
框架名称:pytorch
主要维护方:facebook
支持的语言:c/c++/python
框架名称:theano
主要维护方:udem
支持的语言:python
框架名称:cntk
主要维护方:microsoft
支持的语言:c++/python/c#/.net/java/r
框架名称:mxnet
主要维护方:dmlc
支持的语言:c++/python/r等
框架名称:paddlepaddle
主要维护方:baidu
支持的语言:c++/python
框架名称:deeplearning4j
主要维护方:eclipse
支持的语言:java/scala等
框架名称:onnx
主要维护方:microsoft/ facebook
支持的语言:python/r
下面开始对各框架进行概述,让读者对各个框架有个简单的认知,具体的安装及使用方法不在本文赘述。
01 tensorflow
谷歌的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扩展包的学习资料。
02 keras
keras是一个对小白用户非常友好且简单的深度学习框架。如果想快速入门深度学习, keras将是不错的选择。
keras是tensorflow高级集成api,可以非常方便地和tensorflow进行融合。keras在高层可以调用tensorflow、cntk、theano,还有更多优秀的库也在被陆续支持中。keras的特点是能够快速搭建模型,是高效地进行科学研究的关键。
keras的基本特性如下:
高度模块化,搭建网络非常简洁;
api简单,具有统一的风格;
易扩展,易于添加新模块,只需要仿照现有模块编写新的类或函数即可。
rstudio提供了r与keras的api接口,rstudio的官网及github上也提供了keras扩展包的学习资料。
03 caffe
caffe是由ai科学家贾扬清在加州大学伯克利分校读博期间主导开发的,是以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包的安装及使用的相关内容。
04 pytorch
pytorch是facebook团队于2017年1月发布的一个深度学习框架,虽然晚于tensorflow、keras等框架,但自发布之日起,其受到的关注度就在不断上升,目前在github上的热度已经超过theano、caffe、mxnet等框架。
pytroch主要提供以下两种核心功能:
支持gpu加速的张量计算;
方便优化模型的自动微分机制。
pytorch的主要优点如下。
简洁易懂:pytorch的api设计相当简洁一致,基本上是tensor、autograd、nn三级封装,学习起来非常容易。
便于调试:pytorch采用动态图,可以像普通python代码一样进行调试。不同于tensorflow,pytorch的报错说明通常很容易看懂。
强大高效:pytorch提供了非常丰富的模型组件,可以快速实现想法。
05 theano
theano诞生于2008年,由蒙特利尔大学的lisa实验室开发并维护,是一个高性能的符号计算及深度学习框架。它完全基于python,专门用于对数学表达式的定义、求值与优化。得益于对gu的透明使用,theano尤其适用于包含高维度数组的数学表达式,并且计算效率比较高。
因theano出现的时间较早,后来涌现出一批基于theano的深度学习库,并完成了对theano的上层封装以及功能扩展。在这些派生库中,比较著名的就是本书要学习的keras。keras将一些基本的组件封装成模块,使得用户在编写、调试以及阅读网络代码时更加清晰。
06 cntk
cntk(microsoft cognitive toolkit)是微软开源的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,其他节点表示其输入上的矩阵运算。
cntk允许用户非常轻松地实现和组合流行的模型,包括前馈神经网络(dnn)、卷积神经网络(cnn)和循环神经网络(rnn、lstm)。与目前大部分框架一样,cntk实现了自动求导,利用随机梯度下降方法进行优化。
cntk的基本特性如下。
cntk性能较好,按照其官方的说法,它比其他的开源框架性能都要好。
适合做语音任务,cntk本就是微软语音团队开源的,自然更适合做语音任务,便于在使用rnn等模型以及时空尺度时进行卷积。
微软开发的cntk-r包提供了r与cntk的api接口。
07 mxnet
mxnet框架允许混合符号和命令式编程,以最大限度地提高效率和生产力。mxnet的核心是一个动态依赖调度程序,可以动态地自动并行化符号和命令操作。其图形优化层使符号执行更快,内存效率更高。
mxnet的基本特性如下。
灵活的编程模型:支持命令式和符号式编程模型。
多语言支持:支持c++、python、r、julia、javascript、scala、go、perl等。事实上,它是唯一支持所有r函数的构架。
本地分布式训练:支持在多cpu/gpu设备上的分布式训练,使其可充分利用云计算的规模优势。
性能优化:使用一个优化的c++后端引擎实现并行i/o和计算,无论使用哪种语言都能达到最佳性能。
云端友好:可直接与s3、hdfs和azure兼容。
08 onnx
onnx(open neural network exchange,开放神经网络交换)项目由微软、亚马逊、facebook和ibm等公司共同开发,旨在寻找呈现开放格式的深度学习模型。onnx简化了在人工智能不同工作方式之间传递模型的过程,具有各种深度学习框架的优点。
onnx的基本特性如下。
onnx使模型能够在一个框架中进行训练并转移到另一个框架中进行预测。
onnx模型目前在caffe2、cntk、mxnet和pytorch中得到支持,并且还有与其他常见框架和库的连接器。
onnx-r包提供了r与onnx的api接口。
关于作者:谢佳标,资深ai技术专家和数据挖掘专家,拥有超过14年的技术研发和管理经验。精通python和keras等深度学习框架,在数据挖掘和人工智能技术领域有非常深厚的积累。连续6年(2017~2022年)被微软评为数据科学和ai方向mvp。资深r语言技术专家,“中国现场统计研究会大数据统计分会”第一届理事。历届中国r语言和数据科学大会特邀演讲嘉宾,受邀在国内多所高校举行以数据主题的公益讲座。
四个方面的因素决定了中国将在2030年领导全球AI市场
配电室的无线测温主要应用在哪些地方
示波器的通道间隔离度怎么测量?
如何使用CPK-RA2L1/CPK-RA2E1板创建基于FreeRTOS的CapTouch触摸按键demo工程
详解Linux服务器的用户活动和命令
八种主流深度学习框架的介绍
GaN FET在混合动力汽车/电动汽车中实现高频工作和稳健性
如何选购生活常用电池?
解决噪声问题的PCB注意事项
5G时代区块链技术的发展还面临哪些困难
这款iPhone7Plus手机壳很给力?还能当移动电源使
一文看懂Bluetooth 5.1 AoA到达角度位置服务实现原理
华为为开发人员发布IDE和仿真器 简化鸿蒙测试
如何选择合适的电源?
如何建立传递函数?
高性能处理器的高精度温度监测提高系统性能
如何避免光模块接口受到污染?
广东首个用户侧商用分布式储能正式落地,一般工商业电价第5次降价
苹果暂停与现代汽车合作谈判,日本汽车厂商是否会成为苹果造车工具
比较器IC数据手册中的参数和规格