博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4687|回复: 1

各种编程语言的深度学习库整理

[复制链接]
发表于 2019-10-15 11:33:39 | 显示全部楼层 |阅读模式
各种编程语言的深度学习库整理

Python

1.
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)等等。



 楼主| 发表于 2019-10-15 11:34:37 | 显示全部楼层
这些可作为当前流行语言强力替代的语言正在蒸蒸日上,或许你的下个项目正好能用到它。

有时候大量的烂大街的主流开发语言也没办法满足你对特定问题的开发需求。有时候你不得不展望未来以期待能出现一门语言:有着良好的语言结构,能提供 额外的功能,无需不断调整优化就能使你的代码提高运行速度。这门语言有着更好的稳定性以及良好的的代码结构,能帮你避免写出杂乱的或者错误的代码。

这个世界有太多灵巧的语言,例如 C#,Java,Javascript。有些语言可能只有少数拥护者,但是大多数语言,拥有庞大的社区拥护者,这些拥护者有着对这门语言能解决特定领域问 题能力的相同的喜爱。可能知道这门语言语法的程序员没有过亿,但是有时候稍稍的变动或许是有价值的,当你学习了一门新的语言,说不定下个项目就能发挥用 处。

以下的九门语言应该列在每一位程序眼的读书列表中。它们可能并不适合每个工程,因为大多数语言都是针对特定领域的。它们都值得研究和投入精力去学习,说不定哪一天就能派上用场。

Erlang:面向实时系统的函数式语言
Erlang 最初是由瑞典电信设备制造商爱立信为通信应用(电话交换机)设计的。爱立信的开发者鼓吹 Erlang 的9个9指标的性能,声称 Erlang 能够传输99.9999999%的数据。这时 Erlang 才开始引起人们的关注。

Erlang 的秘密是它的函数式设计范例。大部分代码都被强制运行于它的虚拟机中,这很好的避免了其他系统的干扰。函数都在虚拟机内部运行,运行在小的“类似沙箱模式 的轻量级进程中”,并且只能通过消息传递相互通讯。你不可能仅仅抓取一个指针就够快速该变指针在栈中的状态。你必须保持在调用层次内部来保证函数状态的一 致性。设计上或许有些不妥,但是这样很好的保证了错误向外扩散。

这种模式简化了运行逻辑,让运行时代码决定同时能够运行什么任务。并发处理也很容易管理,运行调度程序能够减少上下文切换。Erlang 迷们喜欢吹嘘“在Web服务器上同时运行2000万”处理器“(轻量级进程)。假如你正在构架一个类似移动电话交换机的实时收费系统,但是并没有足够的空 间存储数据,那么 Erlang 正好符合你的需求。

Go:简单、动态
谷歌不是第一家调查集合语言的组织,最终发现语言杂乱,复杂并且效率不高。2009年,谷歌发布了它自己的解决方案:一门静态类型的语言,类似于 C 语言但是包含了其所不具备的特征,它让程序员避免了类型声明和被 malloc 调用锁迷惑。通过 Go 语言,程序员能够受益于塔的简洁、已编译的c语言的结构以及动态脚本语言的的易用性。

同时,Sun 和 Apple 也以相同的方式创建了 Java 和 Swift 语言,相应的,Google 做出了一个重要的不同的决定:Go 语言的发明者希望它能足够简单以至于每个程序员都能轻松的掌握。Rob Pike,发明者之一,向 Ars Technica 豪言道:长远来说,通过将事件分开处理,你能够获得更多。因此,Go语言还有一些灵活的特性,泛型,类型继承,断言,只通过干净的简单代码块操作字符串、 数字以及哈希表。

据报道这门这门语言在巨大谷歌帝国内部被很好的接受,在其它方面也获得了认可,动态语言 Python 和 Ruby 的爱好者接受了编译已编译语言的严密性。假如你想要获得 Google 的青睐,并且需要建立服务器端的业务逻辑,那么 Go 会是一个好的选择。

Groovy:提供 Java 的脚本支持
Java 世界是异常的灵活。但是你需要仍忍受它”穿个背带裤又要系皮带”的方式,例如,声明,每个变量的类型,分行代表每行结束,类的访问只是返回一个值。但是 Go 语言瞄准了动态语言的吸引人之处并且将它自身紧紧的与 Java 相集成。

Groovy 弃置了 Java 乏味的引号和分号方式,提供一种简单的编程习惯,也能用于扩展现有的 Java代码。运行在 jvm 上。不仅仅如此,Groovy 紧紧的月 JavaJAR 相结合,所以你能和好的利用一有的Java 代码。Groovy 运行起来像一门动态类型语言,并且能够访问静态类型 Java 对象的数据。

Groovy 程序眼认为他们技术与 Java 程序员,同事也是 Groovy 程序员。基于 Java 代码,能够提供非常多的功能。充分使用 Java 拥有的闭包,操作符重载,多态性。不要忘了使用问号来做空指针的判断的简易性,这比使用 if-then 语句来判断要简单得多。因此,简洁的语法,使程序员敲击键盘次数减少了。谁会不喜欢呢?

最后,令所有 Java 程序员羡慕的动态语言的简单特点让他们能够减少工作量,有更多的娱乐时间,但是又不跳出 Java 圈。

OCaml:复杂数据层次把戏
一些程序员不喜欢声明变量,于是他们创建了动态语言。其他人喜欢声明一个变量的特定类型,integer,string 或者是 object。对于他们来说,大多胡编译型语言都对类型声明提供了支持。

这是一些喜欢详细声明变量层次类型的,甚至谈到要创建“algebras”(代数)类型。他们想象列表和多种类型的表能用来表示复杂、多层次的数据。他们提到了多态,模式匹配原型以及数据封装。这只会他们期望的复杂的,高结构化类型、原型以及原原型世界的基础。

对于他们,OCaml,一门有多个编程社区为了让前述想法被广泛接受而共同努力的语言。OCaml 提供类对象的支持,自动内存管理以及跨平台。甚至苹果App商店也提供了 OCaml 的 App 支持。OCaml 的理想的工程可能是建立一个符号数学网站来教授代数。

CoffeeScript:使 JavaScript 更简洁
技术角度来说,CoffeeScript 并不是一门语言。这是一个将你写的代码转换 Javascript 的预处理器。但是它看起来有所与众不同,因为它缺少大量的标点符号。你可以人为他是 Ruby 或者 Python,尽管内部表现像 Javascript。

当封号厌恶者被强制用浏览器支持的 Javascript 编程的时候,Coffeescript 开始流行了。改变浏览器工作的脚本语言是不切实际的,于是他们写了他们自己的预处理。结果是程序员们能够写干净的嗲吗并且让 CoffeeScript 将那些代码转译成各种符号的 Javascript 语言指令来操控浏览器。

少了分号紧紧支持开始。通过 CoffeeScript,你甚至不需要通过var来声明变量。声明函数也不需要function 关键字或者大括号。事实上,大括号在 CoffeeScript 中也不太被使用。代码是如此的简洁,以至于相比于哥特式教堂,它看起来像现代主义建筑物。这就是为什么很多新的 Javascript 框架通常是用 CoffeeScript 写的然后编译成 Javascript。

Scala:JVM上的函数式编程
假如你想要让你的代码有面向对象的清晰层次结构又喜欢函数型编程模式,那你有很多选择。假如你熟悉 Java,Scala 会是你的一个选择。

Scala 运行在 JVM 上,并将所有的清晰的函数式编程的约束转变成 Java 支持的语法以及联接到具体的 JAR 文件。假如那些额外的 JAR 中有副作用和其他不可避免的令人讨厌的头痛代码,那么使用Scala 刚刚适合业务场景,你的代码会变得很清晰。

Scala 是静态类型的。编译器负责在编译时推断出具体类型,对象类型和原始类型没有区别,因为Scala 想让每一个对象都继承自 Any。Scala 的语法比 Java 更加简洁。Scala 程序员称之为“低礼节”。你可以把驼峰式命名方式遗留在 Java 世界了。

Scala 提供了很多函数型语言的特征,例如懒初始化,尾递归,常量。但是为了能在 JVM 中运行,做了适当的修改。基本的原类型或者列表变量(像lists和哈希表),可以是可变或者不可变的。尾递归通过简单的例子运行,而不是必须通过详细声 明的可变递归。以上是 Scala 的全部实现思想,但是因为需要运行在 JVM 上,具体实现会有所限制。Scala 能够所有 Java 平台上运行,能很好的与已存在的开源 Java 代码混用。这对于许多实践性问题是一种权衡。

假如你需要将数据放在一千个处理器的集群中处理,并且有一堆遗留的 Java 代码,那么 Scala 是一个很好的解决方案。

Dart:不像 JavaScript 的 JavaScript
流行并不是被吹捧出来的。可能有越来越多领域使用到了 JavaScript,“事君数,斯辱矣;朋友数,斯疏矣”,有时候太过于亲近反而会导致疏远,疏远了然后就开始寻找替代。Dart 是 Google 出品的一门适用于 Web 浏览器端的新语言。

Dart 并没有从 JavaScript 基本概念中脱离出来。它工作在浏览器中,操作所有的 DIV 和我们所见的Web 对象。Dart 的作者仅仅只是为了清除 JavaScript 中所有恼人的部分,使之变得更简洁。底层结构并没有太大的变化。因为他们希望将 Dart 代码转成 Javascript 来提高运行速度。

高亮可能在许多 JavaScript 类库中提供的额外功能。你不需要通过 jQuery 或者其他通用类库来修改部分 HTML 页面。Dart 提供了默认的支持。也许一些熟悉的数据类型以及语法的速记技巧能够少敲几次键盘。Google 通过提供开源的支持大多数主流平台的开源工具来答题推广 Dart。

假如你正在建立一个动态的 Web 应用。并且已经对于 JavaScript 厌烦了,Dart 提供了清晰的语法结构来创建有多种 Web 资源数据的 Div 块。

Haskell:通用纯函数式编程语言
经过超过20年的时间,一直研究函数型编程的学术研究者开发了 Haskell 语言,一门用来表达他们对于副作用的坏处的想法的语言。这是一门更加存粹的表达式函数型语言,通过精细的机制来处理 I/O Channels 和其他不可避免的副作用。其余的代码应该是相当有用的。

Haskell 社区相当活跃,那里有很多 Haskell 的变体等着你去探究。有些是单机版的,其他的是通过与像 Java(Jaskell,Frege)或者 Python 那样的主流语言集成的。大多数的名字显示他们来自苏格兰,那里是 Haskell 研究,或者是哲学家/逻辑学家(他们是许多 Haskell 思想的启蒙者)的温床。假如你认为你的数据结构和类型太复杂了,你可以考虑用 Haskell。

Julia:给Python界带来了新的消息
科学计算领域有一群 Python 的爱好者,享受 Python 带来的简单语法以及能够避免陷入乱用指针和字节的细节中的自由自在。除了所有的优点,Python 通常在科学计算中处理大数据所表现的令人发狂的运行速度一值是一个诟病。为了提高运行速度,很多科学家转而使用c语言来编写核心的运行代码。但是这带来了 新的问题,用两种语言写的程序很难修改或者扩展。

Julia 是这种复杂问题的一种解决方案。它的作者带来了零 Python 程序员欣赏的干净语法并且做了稍稍修改使之能够在后台编译代码。通过这种方式,你能够像 Python 那样打开个记事本或者命令行来编码,但是你写的任何代码都会被即时编译。

Julia 真是非常了不起的语言。它提供了非常强大的类型分析引擎能够帮助优化代码。假如你喜欢元编程,这门语言提供了足够的扩展接口。它最大的附加价值是通过集群发布并行算法的简单机制。其内置了大量的数学算法库用来做数据分析。

最好的消息应该是它的运行速度。它的许多基本标准的运行速度是 Python 的30倍,甚至比 C 语言还快一点,假如你需要处理大量数据并且喜欢 Python 的语法,那么你最好快去学学 Julia 吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-12-5 03:34 , Processed in 0.089964 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表