主流深度学习框架对比:必定有一款适合你!

现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、DNA序列测序、语音和手写识别、战略游戏和机器人等方面。

使用一个高层次的接口设计和训练深学习模型,需要根据你的编程语言,平台和目标应用程的选择一个最适合你需要的深度学习框架,下面我们捋一捋目前业界常用的深度学习框架:

Caffe 是由神经网络中的表达式、速度、及模块化产生的深度学习框架。后来它通过伯克利视觉与学习中心((BVLC)和社区参与者的贡献,得以发展形成了以一个伯克利主导,然后加之Github和Caffe-users邮件所组成的一个比较松散和自由的社区。

Caffe是一个基于C++/CUDA架构框架,开发者能够利用它自由的组织网络,目前支持卷积神经网络和全连接神经网络(人工神经网络)。在Linux上,C++可以通过命令行来操作接口,对于MATLAB、Python也有专门的接口,运算上支持CPU和GPU直接无缝切换。

Caffe的特点

-易用性:Caffe的模型与相应优化都是以文本形式而非代码形式给出, Caffe给出了模型的定义、最优化设置以及预训练的权重,方便快速使用;

-速度快:能够运行最棒的模型与海量的数据;

-Caffe可与cuDNN结合使用,可用于测试AlexNet模型,在K40上处理一张图片只需要1.17ms;

-模块化:便于扩展到新的任务和设置上;

-使用者可通过Caffe提供的各层类型来定义自己的模型;

目前Caffe应用实践主要有数据整理、设计网络结构、训练结果、基于现有训练模型,使用Caffe直接识别。

CNTK(Computational Network Toolkit )是一个统一的深度学习工具包,该工具包通过一个有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,其他节点表示该节点输入之上的矩阵运算。

CNTK 使得实现和组合如前馈型神经网络DNN、卷积神经网络(CNN)和循环神经网络(RNNs/LSTMs)等流行模式变得非常容易。同时它实现了跨多GPU 和服务器自动分化和并行化的随机梯度下降(SGD,误差反向传播)学习。 下图将CNTK的处理速度(每秒处理的帧数)和其他四个知名的工具包做了比较了。配置采用的是四层全连接的神经网络(参见基准测试脚本)和一个大小是8192 的高效mini batch。在相同的硬件和相应的最新公共软件版本(2015.12.3前的版本)的基础上得到如下结果:

TensorFlow 是谷歌发布的第二代机器学习系统。据谷歌宣称,在部分基准测试中,TensorFlow的处理速度比第一代的DistBelief加快了2倍之多。

具体的讲,TensorFlow是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点( Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。这种灵活的架构可以让使用者在多样化的将计算部署在台式机、服务器或者移动设备的一个或多个CPU上,而且无需重写代码;同时任一基于梯度的机器学习算法均可够借鉴TensorFlow的自动分化(Auto-differentiation);此外通过灵活的Python接口,要在TensorFlow中表达想法也变得更为简单。 TensorFlow最初由Google Brain小组(该小组隶属于Google's Machine Intelligence研究机构)的研究员和工程师开发出来的,开发目的是用于进行机器学习和深度神经网络的研究。但该系统的通用性足以使其广泛用于其他计算领域。 目前Google 内部已在大量使用 AI 技术,包括 Google App 的语音识别、Gmail 的自动回复功能、Google Photos 的图片搜索等都在使用 TensorFlow 。

Theano是一个Python库,它允许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPUs和高效符号分化操作。

Theano具有以下特点:

-与NumPy紧密相关--在Theano的编译功能中使用了Numpy.ndarray ;

-透明地使用GPU--执行数据密集型计算比CPU快了140多倍(针对Float32);

-高效符号分化--Theano将函数的导数分为一个或多个不同的输入;

-速度和稳定性的优化--即使输入的x非常小也可以得到log(1+x)正确结果;

-动态生成 C代码--表达式计算更快;

-广泛的单元测试和自我验证--多种错误类型的检测和判定。

自2007年起,Theano一直致力于大型密集型科学计算研究,但它目前也很被广泛应用在课堂之上( 如Montreal大学的深度学习/机器学习课程)。

Torch是一个广泛支持机器学习算法的科学计算框架。易于使用且高效,主要得益于一个简单的和快速的脚本语言LuaJIT,和底层的C / CUDA实现。

核心特征的总结: 1. 一个强大的n维数组 2. 很多实现索引,切片,移调transposing的例程 3.惊人的通过LuaJIT的C接口 4.线性代数例程 5.神经网络,并基于能量的模型 6.数值优化例程 7.快速高效的GPU支持 8.可嵌入,可移植到iOS,Android和FPGA的后台 Torch目标是让你通过极其简单过程、最大的灵活性和速度建立自己的科学算法。Torch有一个在机器学习领域大型生态社区驱动库包,包括计算机视觉软件包,信号处理,并行处理,图像,视频,音频和网络等,基于Lua社区建立。 Torch 的核心是流行的神经网络,它使用简单的优化库,同时具有最大的灵活性,实现复杂的神经网络的拓扑结构。你可以建立神经网络和并行任意图,通过CPU和GPU等有效方式。 Torch 广泛使用在许多学校的实验室以及在谷歌/ deepmind,推特,NVIDIA,AMD,英特尔和许多其他公司。

Keras

Keras是极其精简并高度模块化的神经网络库,在TensorFlow 或 Theano 上都能够运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。Keras可以说是Python版的Torch7,对于快速构建CNN模型非常方便,同时也包含了一些最新文献的算法,比如Batch Noramlize,文档教程也很全,在官网上作者都是直接给例子浅显易懂。Keras也支持保存训练好的参数,然后加载已经训练好的参数,进行继续训练。

Keras侧重于开发快速实验,用可能最少延迟实现从理念到结果的转变,即为做好一项研究的关键。

当需要如下要求的深度学习的库时,就可以考虑使用Keras:

-考虑到简单快速的原型法(通过总体模块性、精简性以及可扩展性);

-同时支持卷积网络和递归网络,以及两者之间的组合;

-支持任意连接方案(包括多输入多输出训练);

-可在CPU 和 GPU 上无缝运行。

MXNet是一个兼具效率和灵活性的深度学习框架。它允许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。其核心是动态依赖调度程序,该程序可以动态自动进行并行化符号和命令的操作。其中部署的图形优化层使得符号操作更快和内存利用率更高。该库轻量且便携带,并且可扩展到多个GPU和多台主机上。

主要特点:

-其设计说明提供了有用的见解,可以被重新应用到其他DL项目中;

-任意计算图的灵活配置;

-整合了各种编程方法的优势最大限度地提高灵活性和效率;

-轻量、高效的内存以及支持便携式的智能设备;

-多GPU扩展和分布式的自动并行化设置;

-支持Python、R、C++和 Julia;

-对“云计算”友好,直接兼容S3、HDFS和Azure。

MXNet不仅仅是一个深度学习项目,它更是一个建立深度学习系统的蓝图、指导方针以及黑客们对深度学习系统独特见解的结合体。

原文发布于微信公众号 - 吉浦迅科技(gpusolution)

原文发表时间:2016-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GAN&CV

Rules of Machine Learning: Best Practices for ML Engineering

原文地址:https://developers.google.com/machine-learning/rules-of-ml/ 作者:Martin Zin...

16930
来自专栏机器之心

终于!谷歌移动端深度学习框架TensorFlow Lite正式发布

37380
来自专栏语言、知识与人工智能

【腾讯知文】任务型对话机器人简介

2.6K130
来自专栏AI科技评论

动态 | 谷歌发布机器学习规则 关于机器学习工程的最佳实践(下)

文章介绍了一种机器学习样式,类似于 Google C++ 样式指南和其他常用的实用编程指南。

8420
来自专栏机器之心

前沿 | MIT开发神经网络专用芯片:能耗降低95%,适合移动端设备

22570
来自专栏目标检测和深度学习

听说了吗?你也可以在18分钟内训练ImageNet了

该团队的主要训练方法是:fast.ai 用于分类任务的渐进式调整大小和矩形图像验证;英伟达的 NCCL 库,该库整合了 PyTorch 的 all-reduce...

12840
来自专栏机器之心

初学者怎么选择神经网络环境?对比MATLAB、Torch和TensorFlow

选自arXiv 机器之心编译 参与:吴攀、蒋思源、李亚洲 初学者在学习神经网络的时候往往会有不知道从何处入手的困难,甚至可能不知道选择什么工具入手才合适。近日...

505100
来自专栏张俊红

数学之美(二)

总第75篇 本篇为数学之美连载篇二,你还可以看:数学之美(一) 11|矩阵运算与文本处理: 无论是词汇的聚类还是文本的分类,都可以通过线性代数中的奇异值分解来进...

35150
来自专栏腾讯技术工程官方号的专栏

FPGA异构计算在图片处理上的应用以及HEVC算法原理介绍

作者介绍:chaningwang,2008年毕业于中国科学院研究生院,主攻FPGA高性能计算、FPGA图像处理等方向。 先后在华为、怡化公司从事FPGA开发...

49460
来自专栏ATYUN订阅号

MIT开发新型加密方法,使基于云的机器学习更具安全性

麻省理工学院研究人员设计的一种新型加密方法可以保护在线神经网络中使用的数据,而不会减慢其运行时间。这种方法有望在基于云的神经网络进行医学图像分析和其他使用敏感数...

24030

扫码关注云+社区

领取腾讯云代金券