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

网友投稿 1168 2022-05-30

文章目录

一、深度学习框架由来

二、各个深度学习框架

2.1、TensorFlow(Google)

2.2、Theano(蒙特利尔大学)

2.3、Torch(NYU/Facebook)

2.4、PyTorch(Facebook)

2.5、PaddlePaddle(百度)

2.6、MXNet

2.7、Caffe

2.7.1、特点

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

2.7.2、结构

一、深度学习框架由来

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

二、各个深度学习框架

全世界最为流行的深度学习框架有: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

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)是一种深度学习框架!

pytorch TensorFlow 深度学习

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:为什么你使用的 Spring Security OAuth 过期了?
下一篇:JDK8部分JVM参数说明(二)
相关文章