导航:首页 > 源码编译 > 编译器深度学习框架交流

编译器深度学习框架交流

发布时间:2022-06-29 06:32:40

python深度学习框架学哪个

Python 深度学习生态系统在这几年中的演变实属惊艳。pylearn2,已经不再被积极地开发或者维护,大量的深度学习库开始接替它的位置。这些库每一个都各有千秋。我们已经在 indico 的产品或者开发中使用了以下列表中的大部分的技术,但是对于剩下一些我们没有使用的,我将会借鉴他人的经验来帮助给出 Python 深度学习生态系统的清晰的、详尽的理解。
确切地说,我们将会关注:
Theano
Lasagne
Blocks
TensorFlow
Keras
MXNet
PyTorch
下面是对这 7 大 Python 深度学习框架的描述以及优缺点的介绍。
Theano
描述:Theano 是一个 Python 库,允许你定义、优化并且有效地评估涉及到多维数组的数学表达式。它与 GPUs 一起工作并且在符号微分方面表现优秀。
概述:Theano 是数值计算的主力,它支持了许多我们列表当中的其他的深度学习框架。Theano 由 Frédéric Bastien 创建,这是蒙特利尔大学机器学习研究所(MILA)背后的一个非常优秀的研究团队。它的 API 水平较低,并且为了写出效率高的 Theano,你需要对隐藏在其他框架幕后的算法相当的熟悉。如果你有着丰富的学术机器学习知识,正在寻找你的模型的精细的控制方法,或者想要实现一个新奇的或者不同寻常的模型,Theano 是你的首选库。总而言之,为了灵活性,Theano 牺牲了易用性。
优点:
灵活
正确使用时的高性能
缺点:
较高的学习难度
低水平的 API
编译复杂的符号图可能很慢
Lasagne
描述:在 Theano 上建立和训练神经网络的轻量级库
概述:因为 Theano 致力于成为符号数学中最先且最好的库,Lasagne 提供了在 Theano 顶部的抽象,这使得它更适合于深度学习。它主要由当前 DeepMind 研究科学家 Sander Dieleman 编写并维护。Lasagne 并非是根据符号变量之间的函数关系来指定网络模型,而是允许用户在层级思考,为用户提供了例如“Conv2DLayer”和“DropoutLayer”的构建块。Lasagne 在牺牲了很少的灵活性的同时,提供了丰富的公共组件来帮助图层定义、图层初始化、模型正则化、模型监控和模型训练。
优点:
仍旧非常灵活
比 Theano 更高级的抽象
文档和代码中包含了各种 Pasta Puns
缺点:
社区小
Blocks
描述:用于构建和训练神经网络的 Theano 框架
概述:与 Lasagne 类似,Blocks 是在 Theano 顶部添加一个抽象层使深度学习模型比编写原始的 Theano 更清晰、更简单、定义更加标准化。它是由蒙特利尔大学机器学习研究所(MILA)编写,其中一些人为搭建 Theano 和第一个神经网络定义的高级接口(已经淘汰的 PyLearn2)贡献了自己的一份力量。比起 Lasagne,Blocks 灵活一点,代价是入门台阶较高,想要高效的使用它有不小的难度。除此之外,Blocks 对递归神经网络架构(recurrent neural network architectures)有很好的支持,所以如果你有兴趣探索这种类型的模型,它值得一看。除了 TensorFlow,对于许多我们已经部署在 indico 产品中的 API,Blocks 是其首选库。
优点:
仍旧非常灵活
比 Theano 更高级的抽象
易于测试
缺点:
较高的学习难度
更小的社区
TensorFlow
描述:用于数值计算的使用数据流图的开源软件库
概述:TensorFlow 是较低级别的符号库(比如 Theano)和较高级别的网络规范库(比如 Blocks 和 Lasagne)的混合。即使它是 Python 深度学习库集合的最新成员,在 Google Brain 团队支持下,它可能已经是最大的活跃社区了。它支持在多 GPUs 上运行深度学习模型,为高效的数据流水线提供使用程序,并具有用于模型的检查,可视化和序列化的内置模块。最近,TensorFlow 团队决定支持 Keras(我们列表中下一个深度学习库)。虽然 TensorFlow 有着自己的缺点,但是社区似乎同意这一决定,社区的庞大规模和项目背后巨大的动力意味着学习 TensorFlow 是一次安全的赌注。因此,TensorFlow 是我们今天在 indico 选择的深度学习库。
优点:
由软件巨头 Google 支持
非常大的社区
低级和高级接口网络训练
比基于 Theano 配置更快的模型编译
完全地多 GPU 支持
缺点:
虽然 Tensorflow 正在追赶,但是最初在许多基准上比基于 Theano 的慢。
RNN 支持仍不如 Theano
Keras
描述:Python 的深度学习库。支持 Convnets、递归神经网络等。在 Theano 或者 TensorFlow 上运行。
概述:Keras 也许是水平最高,对用户最友好的库了。由 Francis Chollet(Google Brain 团队中的另一个成员)编写和维护。它允许用户选择其所构建的模型是在 Theano 上或是在 TensorFlow 上的符号图上执行。Keras 的用户界面受启发于 Torch,所以如果你以前有过使用 Lua 语言的机器学习经验,Keras 绝对值得一看。由于部分非常优秀的文档和其相对易用性,Keras 的社区非常大并且非常活跃。最近,TensorFlow 团队宣布计划与 Keras 一起支持内置,所以很快 Keras 将是 TensorFlow 项目的一个分组。
优点:
可供选择的 Theano 或者 TensorFlow 后端
直观、高级别的端口
更易学习
缺点:
不太灵活,比其他选择更规范
MXNet
描述:MXNet 是一个旨在提高效率和灵活性的深度学习框架。
概述:MXNet 是亚马逊(Amazon)选择的深度学习库,并且也许是最优秀的库。它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。对 Python 的支持只是其冰山一角—MXNet 同样提供了对 R、Julia、C++、Scala、Matlab,和 Javascript 的接口。如果你正在寻找最佳的性能,选择 MXNet 吧,但是你必须愿意处理与之相对的一些 MXNet 的怪癖。
优点:
速度的标杆
非常灵活
缺点:
最小的社区
比 Theano 更困难的学习难度
PyTorch
描述:Python 中的张量(Tensors)和动态神经网络,有着强大的 GPU 加速。
概述:刚刚放出一段时间,PyTorch 就已经是我们 Python 深度学习框架列表中的一个新的成员了。它是从 Lua 的 Torch 库到 Python 的松散端口,由于它由 Facebook 的 人工智能研究团队(Artificial Intelligence Research team (FAIR))支持且因为它用于处理动态计算图(Theano,TensorFlow 或者其他衍生品没有的特性,编译者注:现在 TensorFlow 好像支持动态计算图),它变得非常的有名。PyTorch 在 Python 深度学习生态系统将扮演怎样的角色还不得而知,但所有的迹象都表明,PyTorch 是我们列表中其他框架的一个非常棒的选择。
优点:
来自 Facebook 组织的支持
完全地对动态图的支持
高级和低级 API 的混合
缺点:
比其他选择,PyTorch 还不太成熟

❷ 什么是程序的编辑器,编译器,什么是Framework(框架)

编译器是程序辅助工具,一般会生成一些帮助代码
框架是编程的一种模式,把正个代码实现的功能按起的作用分类,可以使思路清析

❸ 13个最常用的Python深度学习库介绍

13个最常用的Python深度学习库介绍
如果你对深度学习和卷积神经网络感兴趣,但是并不知道从哪里开始,也不知道使用哪种库,那么这里就为你提供了许多帮助。
在这篇文章里,我详细解读了9个我最喜欢的Python深度学习库。
这个名单并不详尽,它只是我在计算机视觉的职业生涯中使用并在某个时间段发现特别有用的一个库的列表。
这其中的一些库我比别人用的多很多,尤其是Keras、mxnet和sklearn-theano。
其他的一些我是间接的使用,比如Theano和TensorFlow(库包括Keras、deepy和Blocks等)。
另外的我只是在一些特别的任务中用过(比如nolearn和他们的Deep Belief Network implementation)。
这篇文章的目的是向你介绍这些库。我建议你认真了解这里的每一个库,然后在某个具体工作情境中你就可以确定一个最适用的库。
我想再次重申,这份名单并不详尽。此外,由于我是计算机视觉研究人员并长期活跃在这个领域,对卷积神经网络(细胞神经网络)方面的库会关注更多。
我把这个深度学习库的列表分为三个部分。
第一部分是比较流行的库,你可能已经很熟悉了。对于这些库,我提供了一个通俗的、高层次的概述。然后,针对每个库我详细解说了我的喜欢之处和不喜欢之处,并列举了一些适当的应用案例。
第二部分进入到我个人最喜欢的深度学习库,也是我日常工作中使用最多的,包括:Keras、mxnet和sklearn-theano等。
最后,我对第一部分中不经常使用的库做了一个“福利”板块,你或许还会从中发现有用的或者是在第二板块中我还没有尝试过但看起来很有趣的库。
接下来就让我们继续探索。
针对初学者:
Caffe
提到“深度学习库”就不可能不说到Caffe。事实上,自从你打开这个页面学习深度学习库,我就敢打保票你肯定听说Caffe。
那么,究竟Caffe是什么呢?
Caffe是由Berkeley Vision and Learning Center(BVLC)建立的深度学习框架。它是模块化的,速度极快。而且被应用于学术界和产业界的start-of-the-art应用程序中。
事实上,如果你去翻阅最新的深度学习出版物(也提供源代码),你就很可能会在它们相关的GitHub库中找到Caffe模型。
虽然Caffe本身并不是一个Python库,但它提供绑定到Python上的编程语言。我们通常在新领域开拓网络的时候使用这些绑定。
我把Caffe放在这个列表的原因是它几乎被应用在各个方面。你可以在一个空白文档里定义你的模型架构和解决方案,建立一个JSON文件类型的.prototxt配置文件。Caffe二进制文件提取这些.prototxt文件并培训你的网络。Caffe完成培训之后,你可以把你的网络和经过分类的新图像通过Caffe二进制文件,更好的就直接通过Python或MATLAB的API。
虽然我很喜欢Caffe的性能(它每天可以在K40 GPU上处理60万张图片),但相比之下我更喜欢Keras和mxnet。
主要的原因是,在.prototxt文件内部构建架构可能会变得相当乏味和无聊。更重要的是, Caffe不能用编程方式调整超参数!由于这两个原因,在基于Python的API中我倾向于对允许我实现终端到终端联播网的库倾斜(包括交叉验证和调整超参数)。
Theano
在最开始我想说Theano是美丽的。如果没有Theano,我们根本不会达到现有的深度学习库的数量(特别是在Python)。同样的,如果没有numpy,我们就不会有SciPy、scikit-learn和 scikit-image,,同样可以说是关于Theano和深度学习更高级别的抽象。
非常核心的是,Theano是一个Python库,用来定义、优化和评估涉及多维数组的数学表达式。 Theano通过与numpy的紧密集成,透明地使用GPU来完成这些工作。
虽然可以利用Theano建立深度学习网络,但我倾向于认为Theano是神经网络的基石,同样的numpy是作为科学计算的基石。事实上,大多数我在文章中提到的库都是围绕着Theano,使自己变得更加便利。
不要误会我的意思,我爱Theano,我只是不喜欢用Theano编写代码。
在Theano建设卷积神经网络就像只用本机Python中的numpy写一个定制的支持向量机(SVM),当然这个对比并不是很完美。
你可以做到吗?
当然可以。
它值得花费您的时间和精力吗?
嗯,也许吧。这取决于你是否想摆脱低级别或你的应用是否需要。
就个人而言,我宁愿使用像Keras这样的库,它把Theano包装成更有人性化的API,同样的方式,scikit-learn使机器学习算法工作变得更加容易。
TensorFlow
与Theano类似,TensorFlow是使用数据流图进行数值计算的开源库(这是所有神经网络固有的特征)。最初由谷歌的机器智能研究机构内的Google Brain Team研究人员开发,此后库一直开源,并提供给公众。
相比于Theano ,TensorFlow的主要优点是分布式计算,特别是在多GPU的环境中(虽然这是Theano正在攻克的项目)。
除了用TensorFlow而不是Theano替换Keras后端,对于TensorFlow库我并没有太多的经验。然而在接下来的几个月里,我希望这有所改变。
Lasagne
Lasagne是Theano中用于构建和训练网络的轻量级库。这里的关键词是轻量级的,也就意味着它不是一个像Keras一样围绕着Theano的重包装的库。虽然这会导致你的代码更加繁琐,但它会把你从各种限制中解脱出来,同时还可以让您根据Theano进行模块化的构建。
简而言之:Lasagne的功能是Theano的低级编程和Keras的高级抽象之间的一个折中。
我最喜欢的:
Keras
如果我必须选出一个最喜欢的深度学习Python库,我将很难在Keras和mxnet中做出抉择——但最后,我想我会选Keras。
说真的,Keras的好处我说都说不完。
Keras是一个最低限度的、模块化的神经网络库,可以使用Theano或TensorFlow作为后端。Keras最主要的用户体验是,从构思到产生结果将会是一个非常迅速的过程。
在Keras中架构网络设计是十分轻松自然的。它包括一些state-of-the-art中针对优化(Adam,RMSProp)、标准化(BatchNorm)和激活层(PReLU,ELU,LeakyReLU)最新的算法。
Keras也非常注重卷积神经网络,这也是我十分需要的。无论它是有意还是无意的,我觉得从计算机视觉的角度来看这是非常有价值的。
更重要的是,你既可以轻松地构建基于序列的网络(其中输入线性流经网络)又可以创建基于图形的网络(输入可以“跳过”某些层直接和后面对接)。这使得创建像GoogLeNet和SqueezeNet这样复杂的网络结构变得容易得多。
我认为Keras唯一的问题是它不支持多GPU环境中并行地训练网络。这可能会也可能不会成为你的大忌。
如果我想尽快地训练网络,那么我可能会使用mxnet。但是如果我需要调整超参数,我就会用Keras设置四个独立的实验(分别在我的Titan X GPUs上运行)并评估结果。
mxnet
我第二喜欢的深度学习Python库无疑就是mxnet(重点也是训练图像分类网络)。虽然在mxnet中站立一个网络可能需要较多的代码,但它会提供给你惊人数量的语言绑定(C ++、Python、R、JavaScript等)。
Mxnet库真正出色的是分布式计算,它支持在多个CPU / GPU机训练你的网络,甚至可以在AWS、Azure以及YARN集群。
它确实需要更多的代码来设立一个实验并在mxnet上运行(与Keras相比),但如果你需要跨多个GPU或系统分配训练,我推荐mxnet。
sklearn-theano
有时候你并不需要终端到终端的培养一个卷积神经网络。相反,你需要把CNN看作一个特征提取器。当你没有足够的数据来从头培养一个完整的CNN时它就会变得特别有用。仅仅需要把你的输入图像放入流行的预先训练架构,如OverFeat、AlexNet、VGGNet或GoogLeNet,然后从FC层提取特征(或任何您要使用的层)。
总之,这就是sklearn-theano的功能所在。你不能用它从头到尾的训练一个模型,但它的神奇之处就是可以把网络作为特征提取器。当需要评估一个特定的问题是否适合使用深度学习来解决时,我倾向于使用这个库作为我的第一手判断。
nolearn
我在PyImageSearch博客上用过几次nolearn,主要是在我的MacBook Pro上进行一些初步的GPU实验和在Amazon EC2 GPU实例中进行深度学习。
Keras把 Theano和TensorFlow包装成了更具人性化的API,而nolearn也为Lasagne做了相同的事。此外,nolearn中所有的代码都是与scikit-learn兼容的,这对我来说绝对是个超级的福利。
我个人不使用nolearn做卷积神经网络(CNNs),但你当然也可以用(我更喜欢用Keras和mxnet来做CNNs)。我主要用nolearn来制作Deep Belief Networks (DBNs)。
DIGITS
DIGITS并不是一个真正的深度学习库(虽然它是用Python写的)。DIGITS(深度学习GPU培训系统)实际上是用于培训Caffe深度学习模式的web应用程序(虽然我认为你可以破解源代码然后使用Caffe以外其他的后端进行工作,但这听起来就像一场噩梦)。
如果你曾经用过Caffe,那么你就会知道通过它的终端来定义.prototxt文件、生成图像数据、运行网络并监管你的网络训练是相当繁琐的。 DIGITS旨在通过让你在浏览器中执行这些任务来解决这个问题。
此外,DIGITS的用户界面非常出色,它可以为你提供有价值的统计数据和图表作为你的模型训练。另外,你可以通过各种输入轻松地可视化网络中的激活层。最后,如果您想测试一个特定的图像,您可以把图片上传到你的DIGITS服务器或进入图片的URL,然后你的Caffe模型将会自动分类图像并把结果显示在浏览器中。干净利落!
Blocks
说实话,虽然我一直想尝试,但截至目前我的确从来没用过Blocks(这也是我把它包括在这个列表里的原因)。就像许多个在这个列表中的其他库一样,Blocks建立在Theano之上,呈现出一个用户友好型的API。
deepy
如果让你猜deepy是围绕哪个库建立的,你会猜什么?
没错,就是Theano。
我记得在前一段时间用过deepy(做了初始提交),但在接下里的大概6-8个月我都没有碰它了。我打算在接下来的博客文章里再尝试一下。
pylearn2
虽然我从没有主动地使用pylearn2,但由于历史原因,我觉得很有必要把它包括在这个列表里。 Pylearn2不仅仅是一般的机器学习库(地位类似于scikit-learn),也包含了深度学习算法的实现。
对于pylearn2我最大的担忧就是(在撰写本文时),它没有一个活跃的开发者。正因为如此,相比于像Keras和mxnet这样的有积极维护的库,推荐pylearn2我还有些犹豫。
Deeplearning4j
这本应是一个基于Python的列表,但我想我会把Deeplearning4j包括在这里,主要是出于对他们所做事迹的无比崇敬——Deeplearning4j为JVM建立了一个开源的、分布式的深度学习库。
如果您在企业工作,你可能会有一个塞满了用过的Hadoop和MapRece服务器的储存器。也许这些你还在用,也许早就不用了。
你怎样才能把这些相同的服务器应用到深度学习里?
事实证明是可以的——你只需要Deeplearning4j。
总计
以上就是本文关于13个最常用的Python深度学习库介绍的全部内容

❹ 如何选择深度学习框架 TensorFlow/Torch/Mxnet/Theano

深度学习目前的应用领域很多,主要是计算机视觉和自然语言处理,以及各种预测等。对于计算机视觉,可以做图像分类、目标检测、视频中的目标检测等,对于自然语言处理,可以做语音识别、语音合成、对话系统、机器翻译、文章摘要、情感分析等。
对于刚入行深度学习,想从事人工智能工业应用和研发的小白来说,选择一个适合自己的深度学习框架显得尤为重要。那么在选择深度学习框架的时候,要注意哪些内容呢?
通常我们在选择框架时要考虑易用性、性能、社区、平台支持等问题。初学者应该考虑容易上手的框架,偏工业应用的开发者可以考虑使用稳定性高、性能好的框架,偏研究性的开发者,一般选择易用而且有领先的模型基线的框架。
目前这个阶段,TensorFlow因为背靠谷歌公司这座靠山,再加上拥有庞大的开发者群体,而且采用了称为“可执行的伪代码”的Python语言,成为最受欢迎的主流框架之一。一些外围的第三方库(如Keras、TFLearn)也基于它实现了很多成果,Keras还得到TensorFlow官方的支持。TensorFlow支持的上层语言也在逐渐扩大,对于不同工程背景的人转入的门槛正在降低。
因此,对于刚入行深度学习的小白,TensorFlow是一个非常好的选择,掌握TensorFlow对以后的求职发展很有帮助。
为了让大家更快地掌握深度学习技术,成为人工智能领域高端人才,中公教育联合中科院自动化研究所专家,强力推出人工智能《深度学习》,让大家学有所成、真正掌握机器学习模型以及算法背后的原理。

❺ 如何评价最新的深度学习框架cxxnet

这篇文章介绍的是关于并行深度神经网络的设计。在今年发布的两个机器学习项目中,cxxnet是最精彩的一个。因为它包含了我们团队可以发挥到的机器学习和系统的各个方面的极致: 除了前沿的深度学习之外,它的两个独到特点也是让我们在设计实现中最为享受的
1) 灵活的公式支持和极致的C++模板编程;
深度神经网络的实现大致分两类:以python为主的编程效率派和以c++为核心的为代表的追逐性能派。前者支持直接tensor的计算,而后者往往需要给每个神经网络的层和更新公式编写独立的cuda kernel。编程效率派认为机器学习程序员应该是写公式来达到代码最大的可读性和易改写性。而很多以C++为核心的代码之所以没有支持非常灵活的张量计算,是因为因为运算符重载和临时空间的分配会带来效率的降低。
cxxnet的核心mshadow在这两者之间做了一个平衡。使得我们在不损失效率的前提下可以通过模板编程技术允许开发者编写和matlab/numpy类似的代码,并且在编译时自动展开成优化的kernel。其背后的expressiontemplate技术是我最喜欢的c++ trick之一。非常值得最求效率抽象和优美的同学了解。
因为采用了mshadow作为核心,直接导致cxxnet的各种实现可以非常简单可读,编写一份代码就可以在GPU和CPU上面跑。使得其在代码简洁和可扩展上更加容易。
2) 通用的并行参数共享和更新方案
多卡和多机计算一直是大规模机器学习中一个让人兴奋的话题。提到神经网络并行,最让我头疼的是可以选择的方案很多,而都涉及到不同的hack。单机多卡到底是用P2P,还是拷贝到内存,是用stream开始开多线程。分布式到底是用parameter server,MPI还是自己写一个框架。可以选择的方法很多。设计出一个分布式的代码不难,困难的是如何让并行的接口自然的独立出来,使得其不会影响其它部分的实现。经过不断地考虑,最终我决定采用了mshadow-ps这样一个统一的参数共享接口。
简单的说,mshadow-ps是一个GPU的异步parameter server接口(应该也是目前为止唯一一个,因为GPU线程模型和CPU不同,原有的的ps库并不能直接用于GPU)。异步通信对于神经网络的更新非常重要。在backprop算法中,我们很早就可以获得梯度并且进行梯度同步,而只有到下一次forward到对应层的时候才会需要这个weight。
我和limu合作设计了ps风格的三个接口来解决这样的同步问题,Push/PullReq和Pullwait。当获backprop得梯度的时候直接调用push把梯度发送出去,并且调用pullreq请求结果。Push和Pullreq都是异步操作,背后会有单独的线程同时完成数据拷贝同步,以及拷回的操作。而当我们需要weight之前在调用Pullwait来等待可能没有完成的操作。这样简单的三个接口,使得我们可以经过很少的改动就可以设计出多卡和分布式的神经网络来,并且在调用这些接口的时候完全不需要关系同步的实现是什么。
值得一提的是,这样的编程模式把多GPU,分布式以及各个通信框架直接结合起来。mshadow-ps支持单机多卡的GPU PS,以及基于parameter-server的分布式PS实现。同样的也可以很容易MPI来支持多机通信。使得一个统一的接口,可以完成从单机多卡到分布式各种后端实现的支持。并且因为高效的异步通信,使得我们可以在alexnet上面达到linearspeep(注:并行的难度在于计算和通信的时间比,weight少更加复杂的网络反而更加容易线性加速,而alexnet是非常困难的例子)。
经过团队里面大家不断地努力,cxxnet的V2终于可以和大家见面了。除了上述介绍的技术亮点之外,还有各种好玩的特性。现在把特点总结如下:
1. 轻量而齐全的框架: 我们尽力维持最小的依赖库实现最多的功能。推荐环境下仅需要CUDA, OpenCV, MKL或BLAS即可编译。
2. 强大的统一的并行计算接口:基于mshadow-ps的并行计算接口采用了一份代码解决了多GPU,多机的异步同步。同步和计算重叠,在多份测试中均可以得到线性加速比。
3. 易于扩展的代码结构:cxxnet计算核心由mshadow提供。Mshadow使用户可以编写numpy/matlab风格的代码,但仍具备手动优化cuda 代码的灵活性。CPU和GPU共享同一份代码,在编译期间通过模板自动翻译成CUDA/MKL调用。

另外一些特性包括:
4. CuDNN支持:Nvidia原生卷积支持,可加速计算30%!
5. 及时更新的最新技术:我们将及时跟进学术界的动态,例如现在已经支持MSRA的ParametricRelu和Google的Batch Normalization
6. Caffe模型转换:支持将训练好的Caffe模型直接转化为cxxnet模型(本周内上线!)
7. 方便的语言接口:在Python中直接进行训练,方便可视化。Matlab也将很快提供
我们相信可以通过最简洁清晰的代码来完成高效的C++深度神经网络实现。我们也欢迎对于系统和机器学习有兴趣的同学加入到项目中来

❻ 各种编程语言的深度学习库整理大全!

各种编程语言的深度学习库整理大全!
Python1. Theano是一个python类库,用数组向量来定义和计算数学表达式。它使得在Python环境下编写深度学习算法变得简单。在它基础之上还搭建了许多类库。
1.Keras是一个简洁、高度模块化的神经网络库,它的设计参考了Torch,用Python语言编写,支持调用GPU和CPU优化后的Theano运算。
2.Pylearn2是一个集成大量深度学习常见模型和训练算法的库,如随机梯度下降等。它的功能库都是基于Theano之上。
3.Lasagne是一个搭建和训练神经网络的轻量级封装库,基于Theano。它遵循简洁化、透明化、模块化、实用化和专一化的原则。
4.Blocks也是一个基于Theano的帮助搭建神经网络的框架。
2. Caffe是深度学习的框架,它注重于代码的表达形式、运算速度以及模块化程度。它是由伯克利视觉和学习中心(Berkeley Vision and Learning Center, BVLC)以及社区成员共同开发。谷歌的DeepDream项目就是基于Caffe框架完成。这个框架是使用BSD许可证的C++库,并提供了Python调用接口。
3. nolearn囊括了大量的现有神经网络函数库的封装和抽象接口、大名鼎鼎的Lasagne以及一些机器学习的常用模块。
4. Genism也是一个用Python编写的深度学习小工具,采用高效的算法来处理大规模文本数据。
5. Chainer在深度学习的理论算法和实际应用之间架起一座桥梁。它的特点是强大、灵活、直观,被认为是深度学习的灵活框架。
6. deepnet是基于GPU的深度学习算法函数库,使用Python语言开发,实现了前馈神经网络(FNN)、受限玻尔兹曼机(RBM)、深度信念网络(DBN)、自编码器(AE)、深度玻尔兹曼机(DBM)和卷积神经网络(CNN)等算法。
7. Hebel也是深度学习和神经网络的一个Python库,它通过pyCUDA控制支持CUDA的GPU加速。它实现了最重要的几类神经网络模型,提供了多种激活函数和模型训练方法,例如momentum、Nesterov momentum、dropout、和early stopping等方法。
8. CXXNET是一个基于MShadow开发的快速、简洁的分布式深度学习框架。它是一个轻量级、易扩展的C++/CUDA神经网络工具箱,提供友好的Python/Matlab接口来进行训练和预测。
9. DeepPy是基于NumPy的深度学习框架。
10. DeepLearning是一个用C++和Python共同开发的深度学习函数库。
11. Neon是Nervana System 的深度学习框架,使用Python开发。
Matlab
1. ConvNet 卷积神经网络是一类深度学习分类算法,它可以从原始数据中自主学习有用的特征,通过调节权重值来实现。
2. DeepLearnToolBox是用于深度学习的Matlab/Octave工具箱,它包含深度信念网络(DBN)、栈式自编码器(stacked AE)、卷积神经网络(CNN)等算法。
3. cuda-convet是一套卷积神经网络(CNN)代码,也适用于前馈神经网络,使用C++/CUDA进行运算。它能对任意深度的多层神经网络建模。只要是有向无环图的网络结构都可以。训练过程采用反向传播算法(BP算法)。
4. MatConvNet是一个面向计算机视觉应用的卷积神经网络(CNN)Matlab工具箱。它简单高效,能够运行和学习最先进的机器学习算法。
CPP
1. eblearn是开源的机器学习C++封装库,由Yann LeCun主导的纽约大学机器学习实验室开发。它用基于能量的模型实现卷积神经网络,并提供可视化交互界面(GUI)、示例以及示范教程。
2. SINGA是Apache软件基金会支持的一个项目,它的设计目标是在现有系统上提供通用的分布式模型训练算法。
3. NVIDIA DIGITS是用于开发、训练和可视化深度神经网络的一套新系统。它把深度学习的强大功能用浏览器界面呈现出来,使得数据科学家和研究员可以实时地可视化神经网络行为,快速地设计出最适合数据的深度神经网络。
4. Intel? Deep Learning Framework提供了Intel?平台加速深度卷积神经网络的一个统一平台。
Java
1. N-Dimensional Arrays for Java (ND4J) 是JVM平台的科学计算函数库。它主要用于产品中,也就是说函数的设计需求是运算速度快、存储空间最省。
2. Deeplearning4j 是第一款商业级别的开源分布式深度学习类库,用Java和Scala编写。它的设计目的是为了在商业环境下使用,而不是作为一款研究工具。
3. Encog是一个机器学习的高级框架,涵盖支持向量机、人工神经网络、遗传编程、贝叶斯网络、隐马可夫模型等,也支持遗传算法。
JavaScript
1. Convnet.js 由JavaScript编写,是一个完全在浏览器内完成训练深度学习模型(主要是神经网络)的封装库。不需要其它软件,不需要编译器,不需要安装包,不需要GPU,甚至不费吹灰之力。
Lua
1. Torch是一款广泛适用于各种机器学习算法的科学计算框架。它使用容易,用快速的脚本语言LuaJit开发,底层是C/CUDA实现。Torch基于Lua编程语言。
Julia
1. Mocha是Julia的深度学习框架,受C++框架Caffe的启发。Mocha中通用随机梯度求解程序和通用模块的高效实现,可以用来训练深度/浅层(卷积)神经网络,可以通过(栈式)自编码器配合非监督式预训练(可选)完成。它的优势特性包括模块化结构、提供上层接口,可能还有速度、兼容性等更多特性。
Lisp
1. Lush(Lisp Universal Shell)是一种面向对象的编程语言,面向对大规模数值和图形应用感兴趣的广大研究员、实验员和工程师们。它拥有机器学习的函数库,其中包含丰富的深度学习库。
Haskell
1. DNNGraph是Haskell用于深度神经网络模型生成的领域特定语言(DSL)。
.NET
1. Accord.NET 是完全用C#编写的.NET机器学习框架,包括音频和图像处理的类库。它是产品级的完整框架,用于计算机视觉、计算机音频、信号处理和统计应用领域。
R
1. darch包可以用来生成多层神经网络(深度结构)。训练的方法包括了对比散度的预训练和众所周知的训练算法(如反向传播法或共轭梯度法)的细调。
2. deepnet实现了许多深度学习框架和神经网络算法,包括反向传播(BP)、受限玻尔兹曼机(RBM)、深度信念网络(DBP)、深度自编码器(Deep autoencoder)等等。

❼ 深度学习的学习框架是什么

AI 深度学习课纲

1、了解AI及前沿应用成果;

2、掌握人工神经网络及卷积神经网络原理;

3、循环神经网络原理及项目实战;

4、生成式对抗网络原理及项目实战;

5、深度学习的分布式处理及项目实战;

6、深度强化学习及项目实战;

7、企业级项目实战-车牌识别项目实战;

8、深度学习最新前沿技术简介

❽ 2019年十大最佳深度学习框架

作者 | Python语音识别

来源 | 涛哥聊Python

虽然我们大多数人都惊叹为什么DL这么好?在使用大量数据进行训练时,它在准确性方面非常出色。近几年随着深度学习算法的发展,出现了很多深度学习的框架,这些框架各有所长,各具特色。下面将为大家介绍2019年最受欢迎的十大深度学习框架。

TensorFlow

谷歌的Tensorflow可以说是当今最受欢迎的深度学习框架。Gmail,Uber,Airbnb,Nvidia以及其他许多知名品牌都在使用。TF是目前深度学习的主流框架,Tensorflow主要特性:

TensorFlow支持python、JavaScript、C ++、Java和Go,C#和Julia等多种编程语言。 TF不仅拥有强大的计算集群,还可以在iOS和Android等移动平台上运行模型。 TF编程入门难度较大。初学者需要仔细考虑神经网络的架构,正确评估输入和输出数据的维度和数量。 TF使用静态计算图进行操作 。也就是说我们需要先定义图形,然后运行计算,如果我们需要对架构进行更改,我们会重新训练模型。选择这样的方法是为了提高效率,但是许多现代神经网络工具能够在学习过程中考虑改进而不会显着降低学习速度。在这方面,TensorFlow的主要竞争对手是PyTorch 。

TensorFlow优点:

它非常适合创建和试验深度学习架构,便于数据集成,如输入图形,SQL表和图像。 它得到谷歌的支持,这就说明该模型短期内不会被抛弃,因此值得投入时间来学习它。 PyTorch

Tensorflow之后用于深度学习的主要框架是PyTorch。PyTorch框架是Facebook开发的,已被Twitter和Salesforce等公司使用。

PyTorch基本特性:

与TensorFlow不同,PyTorch库使用动态更新的图形进行操作 。这意味着它可以在流程中更改体系结构。 在PyTorch中,您可以使用标准调试器 ,例如pdb或PyCharm。

PyTorch优点:

训练神经网络的过程简单明了。同时,PyTorch支持数据并行和分布式学习模型,并且还包含许多预先训练的模型。 PyTorch更适合小型项目和原型设计。 Sonnet

Sonnet深度学习框架是建立在TensorFlow的基础之上。它是DeepMind用于创建具有复杂架构的神经网络。

Sonnet基本特性:

面向对象的库,在开发神经网络(NN)或其他机器学习(ML)算法时更加抽象。 Sonnet的想法是构造对应于神经网络的特定部分的主要Python对象。此外,这些对象独立地连接到计算TensorFlow图。分离创建对象并将其与图形相关联的过程简化了高级体系结构的设计。

Sonnet优点:

Sonnet的主要优点是可以使用它来重现DeepMind论文中展示的研究,比Keras更容易,因为DeepMind论文模型就是使用Sonnet搭建的。 Keras

Keras是一个机器学习框架,如果您拥有大量数据和/或你想快速入门深度学习,那么Keras将非常适合学习。Keras是TensorFlow高级集成APi,可以非常方便的和TensorFlow进行融合。这是我强烈推荐学习的一个库。

Keras基本特性:

除了Tensorflow之外,Keras还是其他流行的库(如Theano和CNTK)的高级API。 在Keras中更容易创建大规模的深度学习模型,但Keras框架环境配置比其他底层框架要复杂一些。

Keras优点:

对于刚刚入门的人来说,Keras是最好的深度学习框架。它是学习和原型化简单概念的理想选择,可以理解各种模型和学习过程的本质。 Keras是一个简洁的API。 可以快速帮助您创建应用程序。 Keras中代码更加可读和简洁。 Keras模型序列化/反序列化API,回调和使用Python生成器的数据流非常成熟。

顺便说一下TensorFlow和Keras的对比:

PS:Tensorflow处于底层框架:这和MXNet,Theano和PyTorch等框架一样。包括实现诸如广义矩阵 - 矩阵乘法和诸如卷积运算的神经网络原语之类的数学运算。

Keras处于高度集成框架。虽然更容易创建模型,但是面对复杂的网络结构时可能不如TensorFlow。

MXNet

MXNet是一种高度可扩展的深度学习工具,可用于各种设备。虽然与TensorFlow相比,它似乎没有被广泛使用,但MXNet的增长可能会因为成为一个Apache项目而得到提升。

MXNet基本特性:

该框架支持多种语言,如C ++,Python,R,Julia,JavaScript,Scala,Go,甚至Perl。 可以在多个GPU和许多机器上非常有效地并行计算。

MXNet优点:

支持多个GPU(具有优化的计算和快速上下文切换) 清晰且易于维护的代码(Python,R,Scala和其他API) 快速解决问题的能力(对于像我这样的深度学习新手至关重要)

虽然它不像TF那么受欢迎,但MXNet具有详细的文档并且易于使用,能够在命令式和符号式编程风格之间进行选择,使其成为初学者和经验丰富的工程师的理想选择。

GLUON

Gluon是一个更好的深度学习框架,可以用来创建复杂的模型。GLUON基本特性:

Gluon的特殊性是具有一个灵活的界面,简化了原型设计,构建和培训深度学习模型,而不会牺牲学习速度。 Gluon基于MXNet,提供简单的API,简化深度学习模型的创建。 与PyTorch类似,Gluon框架支持使用动态图表 ,将其与高性能MXNet相结合。从这个角度来看,Gluon看起来像是分布式计算的Keras非常有趣的替代品。

GLUON优点:

在Gluon中,您可以使用简单,清晰和简洁的代码定义神经网络。 它将训练算法和神经网络模型结合在一起,从而在不牺牲性能的情况下提供开发过程的灵活性。 Gluon可以定义动态的神经网络模型,这意味着它们可以动态构建,使用任何结构,并使用Python的任何本机控制流。 SWIFT

当你听到Swift时,您可能会考虑iOS或MacOS的应用程序开发。但是如果你正在学习深度学习,那么你一定听说过Swens for Tensorflow。通过直接与通用编程语言集成,Swift for TensorFlow可以以前所未有的方式表达更强大的算法。SWIFT基本特性:

可以轻松获得可微分的自定义数据结构。 下一代API 。通过实践和研究获得的新API更易于使用且更强大。 在TensorFlow的基础上 ,Swift API为您提供对所有底层TensorFlow运算符的直接调用。 基于Jupyter、LLDB或者Swift in Colab的编程工具提高了您的工作效率。

SWIFT优点:

如果动态语言不适合您的任务,那么这将是一个很好的选择。当你训练运行了几个小时,然后你的程序遇到类型错误,那么使用Swift,一种静态类型语言。您将看到代码错误的地方。 Chainer

直到CMU的DyNet和Facebook的PyTorch出现之前,Chainer是动态计算图或网络的领先神经网络框架,它允许输入数据长度不一致。chainer基本特性:

Chainer代码是在Numpy和CuPy库的基础之上用纯Python编写的, Chainer是第一个使用动态架构模型的框架。

Chainer优点:

通过自己的基准测试,Chainer明显比其他面向Python的框架更快,TensorFlow是包含MxNet和CNTK的测试组中最慢的。 比TensorFlow更好的GPU和GPU数据中心性能。最近Chainer成为GPU数据中心性能的全球冠军。 DL4J

那些使用Java或Scala的人应该注意DL4J(Deep Learning for Java的简称)。DL4J的基本特性:

DL4J中的神经网络训练通过簇的迭代并行计算。 该过程由Hadoop和Spark架构支持。 使用Java允许您在Android设备的程序开发周期中使用。

DL4J优点:

如果您正在寻找一个良好的Java深度学习框架,这会是一个非常好的平台。 ONNX

ONNX项目诞生于微软和Facebook,旨在寻找深度学习模型呈现的开放格式。ONNX简化了在人工智能的不同工作方式之间传递模型的过程。因此ONNX具有各种深度学习框架的优点。

ONNX基本特性:

ONNX使模型能够在一个框架中进行训练并转移到另一个框架中进行推理。ONNX模型目前在Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch中得到支持,并且还有许多其他常见框架和库的连接器。

ONNX优点:

对于PyTorch开发人员来说,ONNX是一个好的选择。但是对于那些喜欢TensorFlow的人来说,Keras等可能好一点。 总结

那么您应该使用哪种深度学习框架?下面是几点建议:

如果你刚刚开始学习,那么最好的选择是Keras 。 出于研究目的,请选择PyTorch 。 对于生产,您需要关注环境。因此对于Google Cloud,最好的选择是TensorFlow ,适用于AWS - MXNet和Gluon 。 Android开发人员应该关注D4LJ ,对于iOS来说, Core ML会破坏类似的任务范围。 最后, ONNX将帮助解决不同框架之间的交互问题。

❾ 什么叫做深度学习框架,其作用是什么

深度学习框架是一种为了深度学习开发而生的工具,库和预训练模型等资源的总和。有了这种框架,看似复杂神秘的深度学习模型开发被大大简化,成为AI开发者的必用利器。

目前,TensorFlow和PyTorch明显领先,其他框架势微。如下图所示,基于TensorFlow和PyTorch的开源项目,明显领先其它框架。注:Keras不算完整的AI框架,另外KerasAPI已经成为TF2.0的高层API。

TensorFlow和PyTorch两种框架未来相当时间内会趋同共存。现在PyTorch的在学术界广泛采用;而TensorFlow依赖强大的部署能力,是应用首选。未来TensorFlow2.0大大提高易用性(集成Keras,支持动态库EagerExecution等); PyTorch也在利用ONNX提高部署能力。TensorFlow和PyTorch会越来越趋同。

TensorFlow和PyTorch已是未来几年最主流的深度学习框架。围绕这两种框架的软,硬件,和开发者生态将会迅猛发展,新框架越来越难以成长,其他框架差距越来越大。

❿ 有没有针对深度学习算法特性设计的硬件架构

推荐品牌: LINKZOL(联众集群),可咨询:1381O114665或 Q:3O8837972
他们可以提供软件的安装调试;
操作系统(安装Ubuntu 14.04 LTS)、网络设备驱动安装调试,并行环境(MPI库安装调试)、编译工具及函数库(GCC编译套件、Intel编译器、C/C++/Fortran)的安装和调试等。
以及安装所必须的CUDA环境如以下软件:
编译器:GNU编译器,包括C/C++/Fortran编译器;
Intel编译器,包括C/C++/Fortran编译器、MKL、MPI等;
并行环境:配置OpenMP并行环境;
配置OpenMPI、MPICH等MPI并行环境;
GPU开发环境:配置最新CUDA驱动、编译器、调试器、SDK及例子文件等;
支持cuDNN加速,CUDA FFT、CUDA BLAS等;
深度学习框架:预装Caffe, Torch, Theano, BIDMach、TensorFlow;其中,Caffe需要编译提供python接口和Matla(支持mex编译)接口;
DNN平台:基于B/S架构,便于用户实时且可视化地进行DNN的训练、测试等工作

推荐配置一:
计算平台采用:LZ743GR-2G/Q
系统:Ubuntu 14.04.3 x64
CPU:Intel Xeon十核E5-2630v4(2.2GHz,8.0 GT/s)
内存:原厂64GB内存 (16GB×4) DDR4 2133MHZ ECC-REG.(带内存校错技术,最大支持2T)
系统硬盘:INTEL 2.5寸240G 企业级SSD固态硬盘(最大支持8块硬盘,类型:SATA,SSD)
系统硬盘:希捷3.5寸4T 7200RPM 企业级硬盘(最大支持8块硬盘,类型:SATA,SSD;)
GPU卡:2块NVIDIA TATAN-X GPU卡 (CUDA核心数3584个核心,12G DDR5 显存,最大2个GPU卡)
电源:1200W High efficiency (96%)金牌电源

推荐配置二:
计算平台采用:LZ-748GT
系统:Ubuntu 14.04.3 x64
CPU:Intel Xeon十二核E5-2650v4(2.2GHz,9.6 GT/s)
内存:原厂256GB内存 (16GB×16) DDR4 2133MHZ ECC-REG.(带内存校错技术,最大支持2T)
系统硬盘:2块INTEL 2.5寸480G 企业级SSD固态硬盘(最大支持8块硬盘,类型:SATA,SSD)
系统硬盘:3块希捷3.5寸4T 7200RPM 企业级硬盘(最大支持8块硬盘,类型:SATA,SSD;)
GPU卡:4块TESLA TITANX GPU计算卡或者4块tesla P4O GPU卡 (CUDA核心数3584个核心,12G DDR5 显存,最大4个GPU卡)
电源:2000W High efficiency (94%)冗余钛金电源

推荐配置三:
计算平台采用:LZ428GR-8G/Q
系统:Ubuntu 14.04.3 x64
CPU:Intel Xeon十四核E5-2690v4(2.6GHz,9.6GT/s)
内存:原厂256GB内存 (16GB×16) DDR4 2133MHZ ECC-REG.(带内存校错技术,最大支持2T)
系统硬盘:2块INTEL 2.5寸480G 企业级SSD固态硬盘(最大支持8块硬盘,类型:SATA,SSD)
系统硬盘:3块希捷2.5寸2T 7200RPM 企业级硬盘(最大支持8块硬盘,类型:SATA,SSD;)
GPU卡:8块TESLA P40 GPU计算卡或者8块NVIDIA TATAN-X GPU卡 (CUDA核心数3584个核心,12G DDR5 显存,最大8个GPU卡)
电源:1600W(2+2) High efficiency (96%)钛金电源

阅读全文

与编译器深度学习框架交流相关的资料

热点内容
php七牛视频上传 浏览:13
php五星 浏览:311
使用api访问外部文件夹 浏览:220
自来水加密阀能控制水量吗 浏览:350
移动花卡定向app怎么订 浏览:429
php调用txt 浏览:260
西安软件公司程序员鼓励师 浏览:135
预制桩的加密区怎么区分 浏览:86
ea安装游戏选择文件夹 浏览:872
linuxapache负载均衡配置 浏览:651
pac文件编译软件 浏览:713
基于51单片机的电子时钟设计 浏览:848
手机屏幕解压的小游戏 浏览:749
gcc编译手册pdf 浏览:589
梁箍筋未标注加密区 浏览:629
自家网络连不上上面显示加密 浏览:388
编译后无法运行图片 浏览:595
linux系统修改文件命令 浏览:704
iphone如何安装中国石化app 浏览:179
app怎么写简历 浏览:681