深度学习框架(如:Pytorch、Tensorflow、Caffe...)

举报
ReCclay 发表于 2022/02/21 22:54:38 2022/02/21
【摘要】 文章目录 一、深度学习框架由来二、各个深度学习框架2.1、TensorFlow(Google)2.2、Theano(蒙特利尔大学)2.3、Torch(NYU/Facebook)2.4、PyTorc...

一、深度学习框架由来

在深度学习初始阶段,每个深度学习研究者都需要写大量的重复代码。为了提高工作效率,这些研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用。接着,网上就出现了不同的框架。随着时间的推移,最为好用的几个框架被大量的人使用从而流行了起来。

二、各个深度学习框架

全世界最为流行的深度学习框架有:PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。

2.1、TensorFlow(Google)

自2015年底以来,TensorFlow的库已正式在GitHub上开源,被广泛应用于学术研究和工业应用。一些值得注意的用途包括DeepSpeech,RankBrain,SmartReply和On-DeviceComputerVision。可以在TensorFlow的GitHub项目中查看一些最佳官方用途、研究模型、示例和教程。

2.2、Theano(蒙特利尔大学)

Theano是蒙特利尔大学蒙特利尔学习算法小组开发的一个开源项目。其一些最突出的特性包括GPU的透明使用,与NumPy紧密结合,高效的符号区分,速度/稳定性优化以及大量的单元测试。但是,2017年11月开始不再积极维护。原因在于Theano多年来推出的大部分创新技术现在已被其他框架所采用和完善。

2.3、Torch(NYU/Facebook)

Torch是Facebook的开源机器学习库、科学计算框架和基于Lua编程语言的脚本语言。它提供了广泛的深度学习算法,并已被Facebook、IBM、Yandex和其他公司用于解决数据流的硬件问题。

2.4、PyTorch(Facebook)

PyTorch在学术研究者中很受欢迎,也是相对比较新的深度学习框架。Facebook人工智能研究组开发了PyTorch以应对一些在前任数据库Torch使用中遇到的问题。由于编程语言Lua的普及程度不高,Torch永远无法经历GoogleTensorFlow那样的迅猛发展。因此,PyTorch采用已经为许多研究人员、开发人员和数据科学家所熟悉的原始Python命令式编程风格。同时它还支持动态计算图,这一特性使得其对时间序列以及自然语言处理数据相关工作的研究人员和工程师很有吸引力。

2.5、PaddlePaddle(百度)

PaddlePaddle是百度研发的开源开放的深度学习平台,是国内最早开源、也是当前唯一一个功能完备的深度学习平台。依托百度业务场景的长期锤炼,PaddlePaddle有最全面的官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型,以及多个在国际范围内取得竞赛冠军的算法模型。

PaddlePaddle同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数、数百个几点的高效并行训练,也是最早提供如此强大的深度学习并行技术的深度学习框架。PaddlePaddle拥有强大的多端部署能力,支持服务器端、移动端等多种异构硬件设备的高速推理,预测性能有显著优势。目前PaddlePaddle已经实现了API的稳定和向后兼容,具有完善的中英双语使用文档,形成了易学易用、简洁高效的技术特色。

2.6、MXNet

MXNet的主要作者是李沐,最早就是几个人抱着纯粹对技术和开发的热情做起来的,如今成了亚马逊的官方框架,有着非常好的分布式支持,而且性能特别好,占用显存低,同时其开发的语言接口不仅仅有Python和C++,还有R,Matlab,Scala,JavaScript,等等,可以说能够满足使用任何语言的人。但是MXNet的缺点也很明显,教程不够完善,使用的人不多导致社区不大,同时每年很少有比赛和论文是基于MXNet实现的,这就使得MXNet的推广力度和知名度不高。

2.7、Caffe

Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。最初开发于加利福尼亚大学伯克利分校。Caffe在BSD许可下开源,使用C++编写,带有Python接口。是贾扬清在加州大学伯克利分校攻读博士期间创建了Caffe项目。项目托管于GitHub,拥有众多贡献者。Caffe应用于学术研究项目、初创原型甚至视觉、语音和多媒体领域的大规模工业应用。雅虎还将Caffe与Apache Spark集成在一起,创建了一个分布式深度学习框架CaffeOnSpark。2017年4月,Facebook发布Caffe2,加入了递归神经网络等新功能。2018年3月底,Caffe2并入PyTorch

2.7.1、特点

Caffe 完全开源,并且在有多个活跃社区沟通解答问题,同时提供了一个用于训练、测试等完整工具包,可以帮助使用者快速上手。此外 Caffe 还具有以下特点:

  • 模块性:Caffe 以模块化原则设计,实现了对新的数据格式,网络层和损失函数轻松扩展。
  • 表示和实现分离:Caffe 已经用谷歌的 Protocl Buffer定义模型文件。使用特殊的文本文件 prototxt 表示网络结构,以有向非循环图形式的网络构建
  • Python和MATLAB结合: Caffe 提供了 Python 和 MATLAB 接口,供使用者选择熟悉的语言调用部署算法应用。
  • GPU 加速:利用了 MKL、Open BLAS、cu BLAS 等计算库,利用GPU实现计算加速。

2.7.2、结构

简单来讲,Caffe 中的数据结构是以 Blobs-layers-Net 形式存在。其中,Blobs 是通过 4 维向量形式(num,channel,height,width)存储网络中所有权重,激活值以及正向反向的数据。作为 Caffe 的标准数据格式,Blob 提供了统一内存接口。Layers 表示的是神经网络中具体层,例如卷积层等,是 Caffe 模型的本质内容和执行计算的基本单元。layer 层接收底层输入的 Blobs,向高层输出 Blobs。在每层会实现前向传播,后向传播。Net 是由多个层连接在一起,组成的有向无环图。一个网络将最初的 data 数据层加载数据开始到最后的 loss 层组合为整体。

注:我们常说的Caffe-SSD中,SSD(Single Shot MultiBox Detector,单发多盒检测器)是一种目标检测算法,类比YOLO;而Caffe(Convolutional Architecture for Fast Feature Embedding)是一种深度学习框架!

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/122217464

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。