【读书笔记】《深度神经网络FPGA设计与实现》(孙其功)第二章 深度学习开发平台
第二章 深度学习开发平台
一. 深度学习平台介绍
1. TensorFlow
TensorFlow是谷歌公司在DistBelief(分布式深度学习平台)的基础上改进的第二代人工智能学习系统,而它的名字则来源于其运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow是一个将数据流图(Data Flow Graphs)应用于数值计算的开源软件库。
TensorFlow是一个将复杂的数据结构传输至人工智能神经网络中,并对其进行分析和处理的系统。其中,节点(Nodes)在数据流图中表示数学操作,而数据流图中的线(Edges)则表示在节点间相互联系的多维数据数组,即张量(Tensor)。它具有非常灵活的架构,能够帮助用户在多种平台上展开计算,也被广泛应用于语音识别或图像识别等多项机器学习和深度学习领域。
2. Caffe
Caffe是一个深度学习框架,其优点是表达力强、速度快和模块化,由伯克利视觉学习中心(Berkeley Vision and Learning Center,BVLC)和社区贡献者开发,贾杨青等人在加州大学伯克利分校攻读博士期间创建了这个项目。Caffe的核心模块有三个,分别是Blobs、Layers和Nets。Blobs用来进行数据存储、数据交互和处理,Caffe通过Blobs统一制定了数据内存的接口;Layers是神经网络的核心,它定义了许多层级结构,并将Blobs视为输入输出;Nets是一系列Layers的集合,并且这些层结构通过连接形成一个网图。
Caffe的特性和优点主要有:
(1) Caffe具有模块性。
(2) Caffe支持任意有向非循环图形式的网络构建。
(3) Caffe提供了Python和Matlab相结合的目前研究代码的快速原型和接口,这两种语言都用在了构造网络和分类输入中。
(4) Caffe可以促进创新和应用。
(5) Caffe代码具有可扩展性和活跃性。
(6) Caffe具有非常快的运算速度。
3. Pytorch
Pytorch是Torch的Python版本,是由Facebook开源的神经网络框架。
Pytorch的基础主要包括以下三个方面:
(1) Numpy风格的Tensor操作。
(2) 变量自动求导。
(3) 神经网络层、损失函数和优化函数等高层被封装。
Pytorch具有以下特性和优点
(1) Pytorch可以混合前端,新的混合前端在急切模式和图形模式之间无缝转换,以提供灵活性和速度。
(2) Python语言优先。Pytorch的深度集成允许用户在Python中使用流行的库和包编写神经网络层。
(3) Pytorch拥有丰富的工具和函数库。
(4) Pytorch可以快速实现。
(5) Pytorch具有简洁易懂的代码。
(6) Pytorch具有强大的社区。
(7) Pytorch使用命令式/热切式范式。
4. MXNet
MXNet是亚马逊(Amazon)选择的深度学习库。它拥有类似于Theano和TensorFlow的数据流图,能够应用于多个GPU配置;有着更高级别的模型构建块,并且能够在任何硬件上运行(包括手机)。MXNet提供了对R、Julia、C++、Scala、Matlab和JavaScript的接口,其中对Python的支持只是其冰山一角。
MXNet能够提供以下功能:
(1) 设备放置。
(2) 多GPU培训。
(3) 自动区分。
(4) 优化的预定义图层。
MXNet具有高性能且简单易学的代码、高级API访问和低级控制,是深度学习框架中独一无二的选择;MXNet是DMLC第一个结合了所有成员的努力的项目,也同时吸引了很多核心成员的加入。
5. CNTK
CNTK(the Microsoft Cognitive Toolkit,微软认知工具集)是一个统一的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。CNTK使用户能够通过深度学习实现集中性的、能够处理大规模数据的人工智能,它具有扩展性强、工作效率高和准确性强等优点,并且可以实现多种编程语言与算法之间的相互兼容。
CNTK具有以下四个特性:
(1) 高度优化的内置组件。
(2) 能够对资源进行有效利用。
(3) 能够帮助用户创建自己的网络。
(4) 能够使用Azure(微软基于云计算的操作系统)进行培训和托管。
CNTK具有以下三个优点:
(1) 速度快和可扩展性强。
(2) 商业级质量。
(3) 兼容性。
CNTK目前主要被应用于基于神经网络的逻辑回归与MNIST数字识别,也允许用户使用图级别的API来编写神经网络。由于它的高效性和可扩展性,CNTK被越来越多的用户所熟知和采用。
6. PaddlePaddle
PaddlePaddle具有以下优点:
(1) 代码易于理解,官方提供丰富的学习资料及工具,并且帮助用户迅速成为深度学习开发者。 (2) 框架具备非常好的扩展性,并且提供了丰富全面的API,能够实现用户各种天马行空的创意。 (3) 基于百度多年的AI技术积累以及大量的工程实践验证,框架安全稳定。
(4) 框架能够一键安装,针对CPU、GPU都做了众多优化,分布式性能强劲,并且具有很强的开放性。
PaddlePaddle广泛应用于以下几个方面:
(1) 它能够将词表示成一个实数向量(One-Hot Vector),从而能够进行词与词之间的计算;
(2) 根据不同用户个性化需求与兴趣推荐其可能感兴趣的信息或商品;
(3) 可以用来判断一段文本所表达的情绪状态,比如正面、负面;
(4) 能够根据图像所传达的语义信息将图像按类别进行区分;
(5) 能够通过深度学习方法实现不同语言之间的转换;
(6) 能够利用基于PaddlePaddle的SSD(Single Shot Multibox Detector,单次多目标检测)神经网络模型来做目标探测。
7. Darknet
Darknet是一个使用C语言和CUDA(Computer Unified Device Architecture,计算统一设备架构)编写的开源神经网络框架。它安装快速,并支持CPU和GPU计算。Darknet易于安装,只有两个可选的依赖项:如果用户想要更多种类的支持图像类型,可以使用OpenCV;如果用户想要用GPU计算,可以使用CUDA。CPU上的Darknet速度很快,但它在GPU上的速度更快,是CPU上的500倍!
Darknet框架已经被广泛应用于深度学习领域:它被应用于基于YOLO(一种基于深度神经网络的对象识别和定位算法)网络的实时目标识别与检测系统;被应用于在ImageNet数据集和CIFAR-10数据集下的目标分类系统;还被应用于基于RNN网络的自然语言处理系统。Darknet正在被越来越多的用户所熟知和使用。
二. 深度学习平台对比
下表中总结了这些平台的主要情况,每款平台都有各自的特点。

下面对比了不同深度学习工具在Github上活跃程度的一些指标。

从下图可以看出,无论从哪个指标来看,TensorFlow都要完胜其他对手。

下表对主流深度学习平台进行了各个维度的评分,可作为读者选择学习平台的参考依据。

🚀 获取更多中文资料可点击链接进群领取,谢谢支持!👇
不知道人工智能如何学习?不知道单片机如何运作?不知道嵌入式究竟是何方神圣?搞不清楚什么是物联网?遇到问题无人可问?来我的绿泡泡交流群吧!里面有丰富的人工智能资料,帮助你自主学习人工智能相关内容,不论是基础的Python教程、OpenCV教程以及机器学习等,都可以在群中找到;单片机毕设项目、单片机从入门到高阶的详细解读、单片机的一系列资料也备好放入群中!关于嵌入式,我这里不仅仅有嵌入式相关书籍的电子版本,更是有丰富的嵌入式学习资料,100G stm32综合项目实战提升包,70G 全网最全嵌入式&物联网资料包,嵌入式面试、笔试的资料,物联网操作系统FreeRTOS课件源码!群内高手云集,各位大佬能够为您排忧解难,让您在学习的过程中如虎添翼!扫码进群即可拥有这一切!还在等什么?赶快拿起手机,加入群聊吧!
更多推荐
所有评论(0)