深度学习框架都有哪些?

由网友 科技行者 提供的答案:

非常专业的一个问题。

深度学习框架是帮助使用者进行深度学习的工具,它的出现降低了深度学习入门的门槛,你不需要从复杂的神经网络开始编代码,就可以根据需要使用现有的模型。

做个比喻,一套深度学习框架就像是一套积木,各个组件就是某个模型或算法的一部分,使用者可以自己设计和组装符合相关数据集需求的积木。

当然也正因如此,没有什么框架是完美的,就像一套积木里可能没有你需要的那一种积木,所以不同的框架适用的领域不完全一致。

深度学习的框架有很多,这里帮你罗列几个:

  • Caffe

Caffe是最成熟的框架之一,由Berkeley Vision and Learning Center开发。它是模块化的,而且速度非常快,并且只需要很少的额外工作就可以支持多个GPU。它使用类似JSON的文本文件来描述网络架构以及求解器方法。

此外,在一个可以下载Caffe模型以及网络权重的网站——"model zoo"中,还可以帮助你快速地准备样本。但是,需要注意的是,在Caffe框架中,要调整超参数比其他框架更为繁琐,部分原因是需要为每组超参数单独定义不同的求解器和模型文件。

使用Caffe编写的LeNet CNN实现代码示例

上图是LeNet CNN架构的代码片段,该模型由卷积最大池化(convolution max pooling)和激活层组成的7层卷积网络构成。

  • Deeplearning4j

Deeplearning4j是由Andrej Karpathy开发的、支持GPU的多平台框架,它是用Java编写的,并拥有一个Scala
API。Deeplearning4j也是一个成熟的框架(用Lua编写),在互联网上有许多可以使用的样本,并且支持多个GPU。

  • Tensorflow

Tensorflow是一个由谷歌开发的、相对比较新的框架,但已经被广泛采用。它性能良好,支持多个GPU和CPU。Tensorflow提供了调整网络和监控性能的工具,就像Tensorboard一样,它还有一个可用作网络应用程序的教育工具。

  • Theano

Theano是使用符号逻辑创建网络的框架,是以Python编写的,但利用了numpy的高效代码库,从而提高了性能,超过了标准的Python。Theano在构建网络方面有很大的优势,但是在创造完整的解决方案中则具有比较大的挑战。Theano将机器学习中使用的梯度计算作为网络创建的"免费"副产品,对于那些希望更多地关注网络架构而不是梯度计算的人来说,这可能是有用的。此外,它的文本文件质量也相当不错。

但需要提醒大家的一点是,Theano目前已停止更新。

  • Lasagne

Lasagne是用Python编写的,建立在Theano之上的框架。它是一个相对简单的系统,能够使得网络构建比直接使用Theano更容易。因此,其表现极大地反映了Theano的潜能。

  • Keras

Keras是用Python编写的框架,可以作为Theano或Tensorflow的后端(如下图)。这使得Keras在构建完整的解决方案中更容易,而且因为每一行代码都创建了一个网络层,所以它也更易于阅读。此外,Keras还拥有最先进算法(优化器(optimizers)、归一化例程(normalization
routines)、激活函数(activation functions))的最佳选择。

需要说明的是,虽然Keras支持Theano和Tensorflow后端,但输入数据的维度假设是不同的,因此需要仔细的设计才能使代码支持两个后端工作。该项目有完备的文本文件,并提供了一系列针对各种问题的实例以及训练好了的、用于传输学习实现常用体系的结构模型。

在编写的时候,有消息宣称Tensorflow将采用Keras作为首选的高级包。其实,这并不奇怪,因为Keras的开发者Francois Chollet本身就是谷歌的软件工程师。

▲ 使用Keras编写的LeNet CNN实现代码示例

  • MXNet

MXNet是一个用C
++编写的深度学习框架,具有多种语言绑定,并支持分布式计算,包括多GPU。它提供对低级结构以及更高级/符号级API的访问。在性能上被认为可以与Tensorflow、Caffe等在内的其他框架匹敌。GitHub中提供了很多关于MXNet的教程和培训示例。

  • Cognitive Network Toolkit (CNTK)

CNTK是由微软开发的框架,并被描述为机器学习的"Visual Studio"。对于那些使用Visual Studio进行编程的人,这可能是一种更温和、更有效的进入深度学习的方式。

  • DIGITS

DIGITS是由英伟达开发的,一款基于网络的深层开发工具。在很多方面,它像Caffe一样,能够使用文本文件而不是编程语言来描述网络和参数。它具有网络可视化工具,因此文本文件中的错误更容易被识别出来。此外,它还具有用于可视化学习过程的工具,并支持多个GPU。

  • Torch

Torch是一款成熟的机器学习框架,是用C语言编写的。它具有完备的文本,并且可以根据具体需要进行调整。由于是用C语言编写的,所以Torch的性能非常好。

  • PyTorch

PyTorch是Torch计算引擎的python前端,不仅能够提供Torch的高性能,还能够对GPU的提供更好支持。该框架的开发者表示,PyTorch与Torch的区别在于它不仅仅是封装,而是进行了深度集成的框架,这使得PyTorc在网络构建方面具有更高的灵活性。(如下图)

▲ PyTorch代码示例和等效方框图

  • Chainer

Chainer与其他框架有点不同,它将网络构建视为其计算的一部分。它的开发者介绍说,在这一框架中,大多数工具都是"定义然后运行",这意味着你要定义架构,然后才能运行它。Chainer尝试构建并优化其架构,使其成为学习过程的一部分,或者称之为"通过运行定义"。

  • 其他

除了上述的深度学习框架之外,还有更多的专注于具体任务的开源解决方案。例如,Nolearn专注于深度信念网络(deep belief
networks);
Sklearn-theano提供了一个与scikit-learn(即Python中一个重要的机器学习的库)匹配的编程语法,可以和Theano库配合使用;Paddle则可以提供更好的自然语言处理能力……

由网友 tdkcs 提供的答案:

作为资深玩家的我,前后使用了theano、caffe、tensoflow、pytorch、mxnet,完全凭自己的记忆和领悟回答一下这个问题:

深度学习框架有哪些:

深度学习框架作为算法工程师的必备工具,好比软件工程师的开发语言,前后至少有50多个,比较有名气的10来个,经过近10年的开发和发展,至今主要有两个框架,一个是google的tensorflow,一个是Facebook支持的pyTorch。有人喜欢拿keras和pytorch比,但事实上tensoflow完全支持keras。

如何选择

首先看你是什么群体,如果你是学生党,建议使用pytorch,因为你不需要太关心底层的实现,你只需要关注每个网络层的用法就行,最终把更多的时间用在模型网络优化和参数调整上面,这样Pytorch便于学生理解NN算法和快速实践。如果你是职业算法工程师,那我就建议tensorflow了,工作中基本上你对算法也熟悉了,更应该关注算法落地实现能力,比如,QPS性能、通信网络时延、网络结构优化、权重参数调优等等与计算机基础算法相关的工程能力。因为tensorflow本身就是先有工程需求再重构设计的,一般google大牛的理念还是很前沿的,这个可以参考theano的设计。

另外也要看你偏爱什么语言,虽然tensorflow和pytorch都有python接口调用,但tensorflow底层是c++写的,如果你很了解c++了,何必还去和只懂python的朋友争论哪个好用呢,果断是tensorflow啊,哦不,你应该两个都懂。

最后表明一下我的立场,我喜欢tensorflow,有问题随时骚扰。

由网友 古采尼2017 提供的答案:

深度学习(Deep Learning)是机器学习中一种基于对数据进行表征学习的方法,深度学习的好处是用监督式或半监督式的特征学习、分层特征提取高效算法来替代手工获取特征(feature)。目前研究人员正在使用的深度学习框架不尽相同,有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j等,这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。

TensorFlow无疑是当前人气最高的明星产品:

TensorFlow是一款开源的数学计算软件,使用数据流图(Data Flow Graph)的形式进行计算。图中的节点代表数学运算,而图中的线条表示多维数据数组(tensor)之间的交互。TensorFlow灵活的架构可以部署在一个或多个CPU、GPU的台式以及服务器中,或者使用单一的API应用在移动设备中。TensorFlow最初是由研究人员和Google Brain团队针对机器学习和深度神经网络进行研究所开发的,目前开源之后可以在几乎各种领域适用。

Data Flow Graph: 使用有向图的节点和边共同描述数学计算。graph中的nodes代表数学操作,也可以表示数据输入输出的端点。边表示节点之间的关系,传递操作之间互相使用的多位数组(tensors),tensor在graph中流动——这也就是TensorFlow名字的由来。一旦节点相连的边传来了数据流,节点就被分配到计算设备上异步的(节点间)、并行的(节点内)执行。

TensorFlow的特点:

机动性: TensorFlow并不只是一个规则的neural network库,事实上如果你可以将你的计算表示成data flow graph的形式,就可以使用TensorFlow。用户构建graph,写内层循环代码驱动计算,TensorFlow可以帮助装配子图。定义新的操作只需要写一个Python函数,如果缺少底层的数据操作,需要写一些C++代码定义操作。

可适性强: 可以应用在不同设备上,cpus,gpu,移动设备,云平台等

自动差分: TensorFlow的自动差分能力对很多基于Graph的机器学习算法有益

多种编程语言可选: TensorFlow很容易使用,有python接口和C++接口。其他语言可以使用SWIG工具使用接口。(SWIG—Simplified Wrapper and Interface Generator, 是一个非常优秀的开源工具,支持将 C/C++ 代码与任何主流脚本语言相集成。)

最优化表现: 充分利用硬件资源,TensorFlow可以将graph的不同计算单元分配到不同设备执行,使用TensorFlow处理副本。

除了TensorFlow,以下的深度学习框架也非常知名且值得关注。

一、Caffe。源自加州伯克利分校的Caffe被广泛应用,包括Pinterest这样的web大户。与TensorFlow一样,Caffe也是由C++开发,Caffe也是Google今年早些时候发布的DeepDream项目(可以识别喵星人的人工智能神经网络)的基础。

二、Theano。2008年诞生于蒙特利尔理工学院,Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras。

三、Torch。Torch诞生已经有十年之久,但是真正起势得益于去年Facebook开源了大量Torch的深度学习模块和扩展。Torch另外一个特殊之处是采用了不怎么流行的编程语言Lua(该语言曾被用来开发视频游戏)。

四、Brainstorm。来自瑞士人工智能实验室IDSIA的一个非常发展前景很不错的深度学习软件包,Brainstorm能够处理上百层的超级深度神经网络——所谓的公路网络Highway Networks。

五、Chainer。来自一个日本的深度学习创业公司Preferred Networks,今年6月发布的一个Python框架。Chainer的设计基于define by run原则,也就是说,该网络在运行中动态定义,而不是在启动时定义,这里有Chainer的详细文档。

六、Deeplearning4j。 顾名思义,Deeplearning4j是"for Java"的深度学习框架,也是首个商用级别的深度学习开源库。Deeplearning4j由创业公司Skymind于2014年6月发布,使用 Deeplearning4j的不乏埃森哲、雪弗兰、博斯咨询和IBM等明星企业。

DeepLearning4j是一个面向生产环境和商业应用的高成熟度深度学习开源库,可与Hadoop和Spark集成,即插即用,方便开发者在APP中快速集成深度学习功能,可应用于以下深度学习领域:

  • 人脸/图像识别

  • 语音搜索

  • 语音转文字(Speech to text)

  • 垃圾信息过滤(异常侦测)

  • 电商欺诈侦测

七、Marvin。是普林斯顿大学视觉工作组新推出的C++框架。该团队还提供了一个文件用于将Caffe模型转化成语Marvin兼容的模式。

八、ConvNetJS。这是斯坦福大学博士生Andrej Karpathy开发浏览器插件,基于万能的JavaScript可以在你的游览器中训练神经网络。Karpathy还写了一个ConvNetJS的入门教程,以及一个简洁的浏览器演示项目。

九、MXNet。出自CXXNet、Minerva、Purine等项目的开发者之手,主要用C++编写。MXNet强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。

十、Neon。由创业公司Nervana Systems于今年五月开源,在某些基准测试中,由Python和Sass开发的Neon的测试成绩甚至要优于Caffeine、Torch和谷歌的TensorFlow。

Ref: https://www.oschina.net/news/68074/ten-worth-a-try-open-deep-learning-framework

由网友 哥本哈根诠释2023 提供的答案:

TensorFlow,Keras,PyTorch,MXNet,PaddlePaddle,Deeplearning4j,ONNX,Caffe,Theano

还有一些非主流的,比如MATLAB,Mathematica

深度学习框架都有哪些?

由网友 东北振兴 提供的答案:

国际上广泛使用的开源框架包括谷歌的 TensorFlow、脸书的 Torchnet 和微软的 DMTK等, 美国仍是该领域发展水平最高的国家。我国基础理论体系尚不成熟,百度的 PaddlePaddle、 腾讯的 Angle 等国内企业的算法框架尚无法与国际主流产品竞争。

关注优就业,学习更多IT知识。

部分文章源于互联网收集,不代表默子网络立场,版权归原作者所有,如若转载,请注明出处:https://www.html369.cn/27434.html