开源深度学习平台 TensorFlow、Caffe、MXNet……哪个最适合你?

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8_极速5分11选5

   Torch

上述开源项目的另一区别在于其许可协议:Theano、Torch 和 Caffe 采用 BSD 许可协议,未能解决专利和专利争端那些的问题图片。Deeplearning4j 和 ND4J 采用 Apache 2.0 许可协议发布。该协议含晒 专利授权和解决报复性诉讼的条款,也若果说,任何人都都不能 自由使用遵循 Apache 2.0 协议的代码创作衍生作品并为其申请专利,但不可能 对他人提起针对原始代码(此处即 DL4J)的专利权诉讼,就会立即丧失对代码的一切专利权。(换言之,这帮助你在诉讼中进行自我防卫,同時 阻止你攻击他人。)BSD 一般必须解决你这个那些的问题图片。

最后,Java 是你这个安全的网络语言,本质上具有跨平台的特点,可在 Linux 服务器、Windows 和 OSX 桌面、安卓手机上运行,还可通过嵌入式 Java 在物联网的低内存传感器上运行。Torch 和 Pylearn2 通过 C++ 进行优化,优化和维护因而指在困难,而 Java 则是“一次编写,随处运行”的语言,适合时要在多个平台上使用带宽学习系统的企业。

与你这个项目相比,DL4J 在编程语言和宗旨两方面都独具特色。本文同時 收录你这个开源带宽学习框架介绍,包括最近被亚马逊选中而备受关注的 MXNet。

   (+) 有很多很多很多很多已预定型的模型!

(-) 带宽比你这个框架慢

Torch 的利与弊:

   (-) 原始的 Theano 级别偏低

   (-) Lua

   (-) 不适合递归网络

带宽学习领域的学术研究者大多依赖 Theano,Theano 是带宽学习框架中的元老,用 Python 编写。Theano 和 NumPy 一样,是解决多维数组的学习库。Theano 可与你这个学习库配合使用,非常适合数据探索和研究活动。

   (+) 适合微调已有的网络

Caffe 的利与弊:

   带宽

由此,亚马逊首席技术官 Werner Vogels 在上周二示,亚马逊网络服务公司(AWS)就让选者 MXNet 作为其最主要的带宽学习框架。

相比之下,Deeplearning4j 的目标是成为带宽学习领域的 Scikit-learn,力求以可扩展、多个 GPU 或 CPU 并行的土最好的办法让尽不可能 多的控制点实现自动化,在时要时与 Hadoop 和 Spark 集成。

   (-) 对已预定型模型的支持过高 完善

其次,大型企业主要使用 Java 或基于 JVM 的系统。在企业界,Java 依然是应用范围最广的语言。Java 是 Hadoop、Hive、Lucene 和 Pig 的语言,而它们恰好都不 解决机器学习那些的问题图片的有用工具。也若果说,带宽学习本都不能 帮助你这个时要解决现实那些的问题图片的系统tcp连接员,但许多人却被语言屏障阻碍。许多人希望提高带宽学习对于你这个广大群体的可用性,那些新的用户都不能 将带宽学习直接付诸实用。

上文提到的带宽学习框架都不 比较专业化的框架,此外还有你这个通用型的机器学习框架。这里列举主要的几种:

   (-) 大型模型的编译时间不可能 较长

但 Java 也具备不少优点。首先,Java 语言从根本上看要快于 Python。如不考虑依赖用Cython 加速的状况,任何用 Python 写成的代码在根本上带宽都相对较慢。不可提前大选,运算量最大的运算都不 用 C 或 C++ 语言编写的。(此处所说的运算也包括高级机器学习流程中涉及的字符和你这个任务。)大多数最初用 Python 编写的带宽学习项目在用于生产时都时要重新编写。Deeplearning4j 依靠 JavaCPP 从 Java 中调用预编译的本地 C++ 代码,大幅提升定型带宽。

   (-) 时要用C++ / CUDA编写新的GPU层

(-) 计算图纯粹基于 Python,很多很多很多很多带宽较慢

(+) 同時 支持数据并行和模型并行

   (-) 不适合递归神经网络

(-) 已预定型的模型很多

MXNet 的那我明显的优势是支持分布式计算。这意味着着不可能 你时要在多个 CPU 或 GPU 上训练模型以提高带宽,MXNet 是很好的选者。

   (-) 通常时要本人编写定型代码(即插即用相对较少)

   (+) Lua.;) (大多数学习库的代码是Lua,容易读取)

   百度 PaddlePaddle

   (+) Python界面相当有用

第三,为了解决 Java 缺少强大的科学计算库的那些的问题图片,许多人编写了 ND4J。ND4J 在分布式CPU 或 GPU 上运行,都不能 通过 Java 或 Scala 的 API 进行对接。

Scala、Clojure、Python 和 Ruby 等你这个通行的语言也都不能 原生支持 Java。许多人选者Java,也是为了尽不可能 多地覆盖主要的系统tcp连接员群体。

   Apache Mahout-Apache的主打机器学习框架。Mahout可实现分类、聚类和推荐。

最后,许多人也在用 Java 为 DL4J 打造 NumPy 的基本应用,其中包括 ND-Array。许多人相信 Java 的你这个缺点都能变快克服,而其优势则大多会长期保持。

可扩展性若果可能 是亚马逊被 MXNet 吸引最大的意味着着。Vogels 使用 Inception v3 图像分析算法分析了 MXNet 训练吞吐量的基准,声称通过在多个 GPU 上运行它获得的加速是是呈带宽线性的——在128个GPU上,MXNet 的运行带宽比在单个 GPU 上快109倍。

   SystemML-IBM的机器学习框架,可进行描述性统计、分类、聚类、回归、矩阵参数化和联 存分析,还包括支持向量机。

   (+) 高级的包装界面(Keras、Lasagne)减少了使用时的麻烦

   微软DMTK-微软的分布式机器学习工具包。分布式词嵌入和LDA。

许多人在打造 Deeplearning4j 和 ND4J 的过程含晒 点儿关注 Scala,不可能 许多人认为 Scala 具有成为数据科学主导语言的潜力。用 Scala API 为 JVM 编写数值运算、向量化和带宽学习库都不能 帮助整个群体向实现你这个目标迈进。

生态系统也是为 Java 增添人气的优势之一。Hadoop 是用 Java 实施的;Spark 在Hadoop 的 Yarn 运行时中运行;Akka 等开发库让许多人不能为 Deeplearning4j 开发分布式系统。总之,对几乎所有应用而言,Java 的基础架构都经过反复测试,用 Java 编写的带宽学习网络都不能 靠近数据,方便广大系统tcp连接员的工作。Deeplearning4j 都不能 作为 YARN 的应用来运行和预配。

   Theano、Pylearn2 及其生态系统

   (+) 很容易编写本人的层类型并在GPU上运行

MXNet 作为 2016 年的开源新秀之一,MXNet 值得注意的特征是其紧凑的大小和跨平台的可移植性。亚马逊 CTO Vogels 称赞 MXNet 核心库使用单一 C ++ 源文件,Android、iOS 都都不能 编译。开发人员还都不能 使用多种语言:Python,C ++,R,Scala,Julia,Matlab和JavaScript。

   (-) 比 Torch 笨重你这个;更难理解

   Caffe

Deeplearning4j (简称 DL4J)都不 第有一个 开源的带宽学习项目,但与此前的你这个项目相比,DL4J 在编程语言和宗旨两方面都独具特色。DL4J 是基于 JVM、聚焦行业应用且提供商业支持的分布式带宽学习框架,其宗旨是在合理的时间内解决各类涉及血块数据的那些的问题图片。它与 Hadoop 和 Spark 集成,可使用任意数量的 GPU 或 CPU 运行。

现在已有血块基于 Theano 的开源带宽学习库,包括 Keras、 Lasagne 和 Blocks。那些学习库试着在 Theano 有时过高 直观的界面之上上加一层便于使用的 API。

人太好 Java 的带宽不及 C 和 C++,但它仍比许多人想象得要快,而许多人建立的分布式系统都不能 通过增加节点来提升带宽,节点都不能 是 GPU 不可能 CPU。也若果说,不可能 要带宽快,多加几盒解决器就好了。

Torch7 人太好功能强大,但其设计很多适合在有一个 群体中大范围普及,即主要依赖 Python 的学术界,以及普遍使用 Java 的企业软件工程师。Deeplearning4j用Java编写,反映了许多人对行业应用和使用便利的重视。许多人认为可用性是阻碍带宽学习实施工具广泛普及的限制因素。许多人认为可扩展性应当通过Hadoop和Spark那我的开源分布式运行时系统来实现自动化。许多人还认为,从确保工具正常运作和构建社区两方面来看,提供商业支持的开源框架是最恰当的解决方案。

   (-) 用于大型网络(GoogLeNet、ResNet)时过于繁琐

   (+) 血块模块化组件,容易组合

和 Theano 一样,TensforFlow 会生成计算图(如一系列矩阵运算,类似于于 z = simoid(x),其中 x 和 z 均为矩阵),自动求导。自动求导有点儿要,因此每尝试你这个新的神经网络设计就要手动编写新的反向传播算法,如此愿意那我做。在谷歌的生态系统中,那些计算图会被谷歌大脑用于高带宽计算,但谷歌还如此开放相关工具的源代码。TensorFlow 都不能 与否谷歌组织组织结构带宽学习解决方案的一半。从企业的带宽看,你这个公司时要思考的那些的问题图片在于与否要依靠谷歌来提供那些工具。

   DL4J:生态系统

   (+) RNN 与计算图匹配良好

目前 TensorFlow 还不支持所谓的“内联(inline)”矩阵运算,时要要克隆好友矩阵不能对其进行运算。克隆好友非常大的矩阵会意味着着成本全面偏高。TF 运行所需的时间是最新带宽学习工具的四倍。谷歌表示正在解决你这个那些的问题图片。

   (+) 适合前馈网络和图像解决

(+) 与 Theano 类似于于的计算图抽象化

【导读】本文选自开源带宽学习项目 Deeplearning4j (DL4J)博客,文章人太好着重介绍自家产品,但内容仍然值得借鉴。与你这个项目相比,DL4J 在编程语言和宗旨两方面都独具特色。本文同時 收录你这个开源带宽学习框架介绍,包括最近被亚马逊选中而备受关注的 MXNet。

CNTK 是微软的开源带宽学习框架。CNTK 的全称是“计算网络工具包”。此学习库包括前馈 DNN、卷积网络和递归网络。CNTK 提供基于 C++ 代码的 Python API。人太好 CNTK 遵循有一个 比较宽松的许可协议,却并未采用 ASF 2.0、BSD 或 MIT 等你这个较为传统的许可协议。

Caffe 是有一个 广为人知、广泛应用的机器视觉库,将Matlab实现的快速卷积网络移植到了 C 和 C++ 平台上。Caffe 不适用于文本、声音或时间序列数据等你这个类型的带宽学习应用。与本文提到的你这个你这个框架相同,Caffe 选者了 Python 作为其 API。

   DL4S:基于 Scala 语言的带宽学习

   TensorFlow

   DSSTNE、MXNet

   PaddlePaddle 等机器学习框架

   (+) 定型模型而不让编写任何代码

Deeplearning4j 和 Caffe 都都不能 用卷积网络进行图像分类,这是最先进的技术。与 Caffe 不同,Deeplearning4j 支持任意芯片数的 GPU 并行运行,因此提供你这个看似微过高 道,却能使带宽学习在多个并行 GPU 集群上运行得更流畅的功能。其人太好论文中被广泛引述,但 Caffe 主要用于为其 Model Zoo 网站提供已预定型的模型。Deeplearning4j 正在开发将 Caffe 模型导入 Spark 的开发解析器。

(+) 用 TensorBoard 进行可视化

Theano 的 利与弊

(+) 编译时间比 Theano 快很多很多很多很多

   (+) Python + NumPy

Deeplearning4j 依靠 ND4J 进行基础的线性代数运算,事实表明其解决大矩阵乘法的带宽共若果 NumPy 的两倍。这正是 DL4J 被 NASA 的喷气推进实验室所采用的意味着着之一。此外,Deeplearning4j 为多芯片运行而优化,支持采用 CUDA C 的 x86 和 GPU。

   DL4J:为那些用 Java?

亚马逊的带宽可伸缩稀疏张量网络引擎又称 DSSTNE,是用于机器学习和带宽学习建模的学习库。它是众多最新的开源带宽学习库之一,在 Tensorflow 和 CNTK 就让发布。 DSSTNE 主要用 C++ 写成,带宽较快,不过吸引到的用户群体规模尚不及你这个学习库。

   (+) 计算图是良好的抽象化土最好的办法

TensorFlow 不提供商业支持,而谷歌若果太不可能 会从事支持开源企业软件的业务。谷歌的角色是为研究者提供你这个新工具。

人太好 Torch7 和 DL4J 都采用并行运行,DL4J 的并行运行是自动化的。许多人实现了从节点(worker nodes)和连接的自动化设置,让用户在 Spark、Hadoop 或 Akka 和 AWS 环境中建立大型并行网络时都不能 绕过学习库。Deeplearning4j 最适合快速解决具体那些的问题图片。

   许可

(-) 比 Torch 笨重你这个;更难理解

谷歌似乎也已承认 TF 的目标是招募人才。众所周知,许多人最近提前大选了为期一年的谷歌大脑(Google Brain)人才培训项目。人太好 明智的举措。

   (-) 错误信息不可能 如此帮助

目录

和大多数带宽学习框架一样,TensorFlow 是用有一个 Python API 编写的,通过 C/C++ 引擎加速。你这个解决方案很多适合 Java 和 Scala 用户群。

   sci-kit learn-Python的默认开源机器学习框架。

TensorFlow 的用途不止于带宽学习。TensorFlow 人太好还有支持强化学习和你这个算法的工具。

(+) Python + NumPy

TensorFlow 的利与弊

   CNTK

Torch 是用 Lua 编写的计算框架,支持机器学习算法。谷歌 DeepMind、Facebook 等大型科技公司使用 Torch 的你这个版本,由组织组织结构团队专门负责定制本人的带宽学习平台。Lua 是上世纪九十年代早期在巴西开发的多范例脚本语言。

一方面,使用 MXNet 构建网络比用 Keras 时要花更多功夫。不可能 教程少,学习的难度更大。因此,MXNet 支持超过 7 种不同的语言的优势弥补了这你这个,那些语言包括 C++、Python、R、Javascrip,甚至 Matlab。

有一个 劲许多人问许多人,既然有如此之多的带宽学习用户都专注于 Python,为那些还选者 Java 来实施开源带宽学习项目。的确,Python 有着优越的语法帕累托图,都不能 直接将矩阵相加,而不让像Java那样先创建显式类。Python 还有由 Theano、NumPy 等原生扩展组成的广泛的科学计算环境。

MXNet 同 Keras 一样是高级库,但它的优势在另外的方面。