机器学习工具
这里分为机器学习开源库和工具,来自(http://www.52ml.net/12043.html)
常见工具有:
- MATLAB :商业软件,有专门的工具包
- SAS:商业软件
- SPSS:商业软件
- Java:机器学习库十分流行,主要体现在大数据下的jvm的本质和算法并行化 的优势。
- Python:易扩展
- C/C++:
- R:
开发工具包:
1.机器学习开源软件网(收录了各种机器学习的各种编程语言学术与商业的开源软件)
http://mloss.org
libsvm
支持向量机界最牛的,林教授的杰作(c++)
http://www.csie.ntu.edu.tw/~cjlin/libsvm/WEKA
基于java的机器学习算法最全面最易用的开源软件。
http://www.cs.waikato.ac.nz/ml/weka/scikit
基于python的机器学习软件,代码写得非常好,而且官方的文档非常全,所有都有例子,算法也齐全,开发也活跃。
下载版本:https://pypi.python.org/pypi/scikit-learn/
Project:http://scikit-learn.org/stable/
github: https://github.com/scikit-learn/scikit-learnOpenCv
最牛的开源计算机视觉库了,前途无可限量,做图像处理与模式识别的一定要用,总不能整天抱着matlab做实验和工业界脱节吧,但是有一定难度。
http://opencv.willowgarage.com/wiki/Orange
基于c++和python接口的机器学习软件,界面漂亮,调用方便,可以同时学习C++和python,还有可视化的功能。
http://orange.biolab.si/Mallet
基于JAVA实现的机器学习库,主要用于自然语言处理方面,特色是马尔可夫模型和随机域做得好,可和WEKA互补。
http://mallet.cs.umass.edu/NLTK
PYTHON的自然处理开源库,非常易用,也强大,还有几本orelly的经典教程。
http://nltk.org/lucene
基于java的包括nutch,solr,hadoop,mahout等全套,是做信息检索和搜索引擎的同志们必学的开源软件了,学JAVA的必学。
http://lucene.apache.org/
10.Shogun
著名的Shogun创建于1999年,尽管它是用C++编写的,但可以与Java,Python,C#,Ruby,R,Lua, Octave和Matlab一起使用。最新版本 6.0.0 增加了对Microsoft Windows和Scala语言的本地支持。
虽然广受欢迎,但是 Shogun 仍受到来自另外一个基于C++的机器学习库的竞争:2011年出现的Mlpack。但是Shogun仍然自称是比其他竞争者更快更易用的(通过一个更完整的API集)。
Project: http://www.shogun-toolbox.org/
Github: https://github.com/shogun-toolbox/shogun
11.Accord.Net Framework
Accord是一个机器学习和信号处理框架,基于.Net编写,是以前的项目AForge.net的延伸,Accord包括一组用于处理音频信号和图像流(例如视频)的库。其视觉处理算法可用于脸部识别,拼接图像或跟踪移动物体等任务。
Accord还提供更传统的机器学习功能的库,包括神经网络和决策树系统。
Project: http://accord-framework.net/
Github: https://github.com/accord-net/framework/
12.Golearn
GoLearn 是一个由Go语言编写的机器学习库, 根据开发者 Stephen Whitworth 的研究, 它以简洁性和可定制性为目标。简洁性在于在库中加载和处理数据的方式, 这点模仿了 SciPy 和 R 。可定制性在于如何在应用程序中轻松扩展某些数据结构。Stephen Whitworth 还为 Vowpal Wabbit 库创建了一个gGo包装器,它可以在Shogun工具箱中找到。
Github: https://github.com/sjwhitworth/golearn
13.Deeplearn.js
在web浏览器中进行深度学习的另一个项目是deeplearn.js,它来自Google。你可以在任何现代浏览器中直接训练神经网络模型,而无需额外的客户端软件。deeplearn.js还可以通过web GLAPI进行GPU加速,因此性能不受限于系统的CPU。该项目的函数模仿了Google 的TensorFlow,使得TensorFlow的用户可以轻松地开始使用。
Project: https://pair-code.github.io/deeplearnjs/
14.ConvNetJS
顾名思义,ConvNetJS是用于神经网络机器学习的JavaScript库,便于将浏览器用作数据工作台。 对于使用Node.js的用户,还可以使用NPM版本,该库的设计使用了JavaScript的异步操作。例如,训练完成后执行一个回调。它包括了大量演示示例。
Project: http://cs.stanford.edu/people/karpathy/convnetjs/
Github: https://github.com/karpathy/convnetjs
Additional:
1.pyml
a python module for machine learning,支持svm/knn/k-means.etc
http://mlpy.sourceforge.net/
2.mahout
阿帕奇基金下项目,其主要是可以与hadoop进行天然结合,从而并行运行,在鲁棒性方面很好。
http://mahout.apache.org/
3.milk
python的机器学习工具包,主要是针对监督学习,包括svm/knn/决策树。
http://pypi.python.org/pypi/milk/
4.Octave
Andrew NG课上推荐使用的,类似matlab。
http://www.gnu.org/software/octave/
机器学习的开源工具
以下工具绝大多数都是开源的,基于GPL、Apache等开源协议,使用时请仔细阅读各工具的license statement。
我通过浏览各开源工具网站,对其licence agreement进行了一下了解,在这里简单贴上其遵循的licence,希望有用。如果实际商用或者其他用途,还须仔细到个网站查询或联系developers。由于版本的升级,相应的licence也会有一定的改动,需要注意。如果有错误,希望大家指出,谢谢。
I. Information Retrieval (like BSD)
Lemur/Indri
The Lemur Toolkit for Language Modeling and Information Retrieval
http://www.lemurproject.org/
Indri:
Lemur’s latest search engineLucene/Nutch (Apache 2.0协议)
Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java.
Lucene是apache的顶级开源项目,基于Apache 2.0协议,完全用java编写,具有perl, c/c++, dotNet等多个port.
http://lucene.apache.org/
http://www.nutch.org/WGet (GPL)
GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.
http://www.gnu.org/software/wget/wget.html
II. Natural Language Processing
EGYPT: A Statistical Machine Translation Toolkit
http://www.clsp.jhu.edu/ws99/projects/mt/
包括GIZA等四个工具GIZA++ (Statistical Machine Translation) (GPL)
http://www.fjoch.com/GIZA++.html
GIZA++ is an extension of the program GIZA (part of the SMT toolkit EGYPT) which was developed by the Statistical Machine Translation team during the summer workshop in 1999 at the Center for Language and Speech Processing at Johns-Hopkins University (CLSP/JHU). GIZA++ includes a lot of additional features. The extensions of GIZA++ were designed and written by Franz Josef Och.
Franz Josef Och先后在德国Aachen大学,ISI(南加州大学信息科学研究所)和Google工作。GIZA++现已有Windows移植版本,对IBM 的model 1-5有很好支持。PHARAOH (Statistical Machine Translation)
http://www.isi.edu/licensed-sw/pharaoh/
a beam search decoder for phrase-based statistical machine translation modelsOpenNLP: (LGPL?)
http://opennlp.apache.org/
包括Maxent等20多个工具
btw: 这些SMT的工具还都喜欢用埃及相关的名字命名,像什么GIZA、PHARAOH、Cairo等等。Och在ISI时开发了GIZA++,PHARAOH也是由来自ISI的Philipp Koehn 开发的,关系还真是复杂啊
MINIPAR by Dekang Lin (Univ. of Alberta, Canada)
MINIPAR is a broad-coverage parser for the English language. An uation with the SUSANNE corpus shows that MINIPAR achieves about 88% precision and 80% recall with respect to dependency relationships. MINIPAR is very efficient, on a Pentium II 300 with 128MB memory, it parses about 300 words per second.
binary填一个表后可以免费下载
http://www.cs.ualberta.ca/~lindek/minipar.htmWordNet (need connect if for commercial use)
http://wordnet.princeton.edu/
WordNet is an online lexical reference system whose design is inspired by current psycholinguistic theories of human lexical memory. English nouns, verbs, adjectives and adverbs are organized into synonym sets, each representing one underlying lexical concept. Different relations link the synonym sets.
WordNet was developed by the Cognitive Science Laboratory at Princeton University under the direction of Professor George A. Miller (Principal Investigator).
WordNet最新版本是2.1 (for Windows & Unix-like OS),提供bin, src和doc。
WordNet的在线版本是:http://wordnet.princeton.edu/perl/webwnHowNet
http://www.keenage.com/
HowNet is an on-line common-sense knowledge base unveiling inter-conceptual relations and inter-attribute relations of concepts as connoting in lexicons of the Chinese and their English equivalents.
由CAS的Zhendong Dong & Qiang Dong开发,是一个类似于WordNet的东东Statistical Language Modeling Toolkit
http://svr-www.eng.cam.ac.uk/~prc14/toolkit.html
The CMU-Cambridge Statistical Language Modeling toolkit is a suite of UNIX software tools to facilitate the construction and testing of statistical language models.SRI Language Modeling Toolkit (GPL)
www.speech.sri.com/projects/srilm/
SRILM is a toolkit for building and applying statistical language models (LMs), primarily for use in speech recognition, statistical tagging and segmentation. It has been under development in the SRI Speech Technology and Research Laboratory since 1995.ReWrite Decoder
http://www.isi.edu/licensed-sw/rewrite-decoder/
The ISI ReWrite Decoder Release 1.0.0a by Daniel Marcu and Ulrich Germann. It is a program that translates from one natural languge into another using statistical machine translation.GATE (General Architecture for Text Engineering)
http://gate.ac.uk/
A Java Library for Text Engineering
III. Machine Learning
YASMET: Yet Another Small MaxEnt Toolkit (Statistical Machine Learning)
http://www.fjoch.com/YASMET.html
由Franz Josef Och编写。此外,OpenNLP项目里有一个java的MaxEnt工具,使用GIS估计参数,由东北大学的张乐(目前在英国留学)port为C++版本LibSVM (BSD)
由国立台湾大学(ntu)的Chih-Jen Lin开发,有C++,Java,perl,C#等多个语言版本
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC ), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM ). It supports multi-class classification.SVM Light (connect if for commercial use)
由cornell的Thorsten Joachims在dortmund大学时开发,成为LibSVM之后最为有名的SVM软件包。开源,用C语言编写,用于ranking问题
http://svmlight.joachims.org/CLUTO (GPL)
http://www-users.cs.umn.edu/~karypis/cluto/
a software package for clustering low- and high-dimensional datasets
这个软件包只提供executable/library两种形式,不提供源代码下载CRF++ (LGPL/BSD)
http://chasen.org/~taku/software/CRF++/
Yet Another CRF toolkit for segmenting/labelling sequential data
CRF(Conditional Random Fields),由HMM/MEMM发展起来,广泛用于IE、IR、NLP领域SVM Struct (non-commerical)
http://www.cs.cornell.edu/People/tj/svm_light/svm_struct.html
同SVM Light,均由cornell的Thorsten Joachims开发。
SVMstruct is a Support Vector Machine (SVM) algorithm for predicting multivariate outputs. It performs supervised learning by approximating a mapping
h: X –> Y
using labeled training examples (x1,y1), …, (xn,yn).
Unlike regular SVMs, however, which consider only univariate predictions like in classification and regression, SVMstruct can predict complex objects y like trees, sequences, or sets. Examples of problems with complex outputs are natural language parsing, sequence alignment in protein homology detection, and markov models for part-of-speech tagging.
SVMstruct can be thought of as an API for implementing different kinds of complex prediction algorithms. Currently, we have implemented the following learning tasks:
SVMmulticlass: Multi-class classification. Learns to predict one of k mutually exclusive classes. This is probably the simplest possible instance of SVMstruct and serves as a tutorial example of how to use the programming interface.
SVMcfg: Learns a weighted context free grammar from examples. Training examples (e.g. for natural language parsing) specify the sentence along with the correct parse tree. The goal is to predict the parse tree of new sentences.
SVMalign: Learning to align sequences. Given examples of how sequence pairs align, the goal is to learn the substitution matrix as well as the insertion and deletion costs of operations so that one can predict alignments of new sequences.
SVMhmm: Learns a Markov model from examples. Training examples (e.g. for part-of-speech tagging) specify the sequence of words along with the correct assignment of tags (i.e. states). The goal is to predict the tag sequences for new sentences.
IV. Misc:
Notepad++: (GPL)
一个开源编辑器,支持C#,perl,CSS等几十种语言的关键字,功能可与新版的UltraEdit,Visual Studio .NET媲美
http://notepad-plus.sourceforge.netWinMerge: (GPL)
用于文本内容比较,找出不同版本的两个程序的差异
winmerge.sourceforge.net/OpenPerlIDE: (GPL)
开源的perl编辑器,内置编译、逐行调试功能
open-perl-ide.sourceforge.net/
ps: 论起编辑器偶见过的最好的还是VS .NET了,在每个function前面有+/-号支持expand/collapse,支持区域copy/cut/paste,使用ctrl+ c/ctrl+x/ctrl+v可以一次选取一行,使用ctrl+k+c/ctrl+k+u可以comment/uncomment多行,还有还有…… Visual Studio .NET is really kool:DBerkeley DB (dual license)
http://www.sleepycat.com/
Berkeley DB不是一个关系数据库,它被称做是一个嵌入式数据库:对于c/s模型来说,它的client和server共用一个地址空间。由于数据库最初是从文件系统中发展起来的,它更像是一个key-value pair的字典型数据库。而且数据库文件能够序列化到硬盘中,所以不受内存大小限制。BDB有个子版本Berkeley DB XML,它是一个xml数据库:以xml文件形式存储数据?BDB已被包括microsoft、google、HP、ford、motorola等公司嵌入到自己的产品中去了
Berkeley DB (libdb) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. It includes b+tree, queue, extended linear hashing, fixed, and variable-length record access methods, transactions, locking, logging, shared memory caching, database recovery, and replication for highly available systems. DB supports C, C++, Java, PHP, and Perl APIs.
It turns out that at a basic level Berkeley DB is just a very high performance, reliable way of persisting dictionary style data structures – anything where a piece of data can be stored and looked up using a unique key. The key and the value can each be up to 4 gigabytes in length and can consist of anything that can be crammed in to a string of bytes, so what you do with it is completely up to you. The only operations available are “store this value under this key”, “check if this key exists” and “retrieve the value for this key” so conceptually it’s pretty simple – the complicated stuff all happens under the hood.
case study:
Ask Jeeves uses Berkeley DB to provide an easy-to-use tool for searching the Internet.
Microsoft uses Berkeley DB for the Groove collaboration software
AOL uses Berkeley DB for search tool meta-data and other services.
Hitachi uses Berkeley DB in its directory services server product.
Ford uses Berkeley DB to authenticate partners who access Ford’s Web applications.
Hewlett Packard uses Berkeley DB in serveral products, including storage, security and wireless software.
Google uses Berkeley DB High Availability for Google Accounts.
Motorola uses Berkeley DB to track mobile units in its wireless radio network products.R (GPL)
http://www.r-project.org/
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R.
R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, …) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.
One of R’s strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor design choices in graphics, but the user retains full control.
R is available as Free Software under the terms of the Free Software Foundation’s GNU General Public License in source code form. It compiles and runs on a wide variety of UNIX platforms and similar systems (including FreeBSD and Linux), Windows and MacOS.
R统计软件与MatLab类似,都是用在科学计算领域的。
深度学习工具
1. Caffe
Caffe是加州大学伯克利分校攻读博士学位者的杰作,这是一种深度学习框架,基于表达式架构和可扩展代码。速度快是它赖以成名的特点,因而在研究人员和企业用户当中都备受欢迎。据官方网站声称,仅仅使用一个英伟达K40 GPU,它在短短一天内就能够处理6000多万个图像。它由伯克利视觉和学习中心(BVLC)管理,英伟达和亚马逊等公司提供了拨款,支持它的发展。
主要应用在计算机视觉领域。
总的来说,Caffe的特点如下:
(a)表达方便:模型和优化办法的表达用的是纯文本办法表示,而不是代码
(b)速度快:对于科研来说,我们提供接近于工业化的速度对于大规模数据和当前最牛掰的算法模型是非常重要的
(c)模块化:具有新任务和设置需要的灵活性和扩展性
(d)开放性:科学研究和应用程序可调用同样的代码,参考模型,并且结果可重现。
(e)社区性:学术研究,启动原型和工业应用领域的伙伴以一个BSD-2项目的形式共同讨论和开发。
Caffe的主要特性如下。
开发者:Berkeley Vision and LearningCenter
底层语言:C++
接口语言:命令行,Python,Matlab
运行方式:CPU or GPU
操作系统:Windows or Linux
安装方式:需要配置相关Python库 需要CUDA支持 需要OpenCV支持
支持的深度学习网络:支持大部分先进的网络
集成的数据集:CIFAR10 ILSVRC12 MNIST
优势:网络开发和构建过程简单,运行速度快,实现了多种接口,实现了跨平台,可能是第一个主流的工业级深度学习工具。
不足:Caffe对递归网络和语言建模的支持很差,支持pycaffe接口,但这仅仅是用来辅助命令行接口的,而即便是使用pycaffe也必须使用protobuf定义模型 。
下载地址:https://github.com/BVLC/caffe
官方链接:http://caffe.berkeleyvision.org
2. TensorFlow
TensorFlow 是谷歌发布的第二代机器学习系统。具体的讲,TensorFlow是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点(Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。这种灵活的架构可以让使用者多样化地将计算部署在台式机、服务器或者移动设备的一个或多个CPU上,而且无需重写代码。
TensorFlow具有以下特性:
开发者:Google Brain Team
底层语言:C++ Python
接口语言:Python C/C++
运行方式:CPU or GPU
操作系统:Linux or Mac OS X
安装方式:需要安装Python支持
支持的深度学习网络:卷积网络循环网络
优势:TensorFlo是一个理想的RNN(递归神经网络)
API和实现,而且它架构清晰,采用了模块化设计,支持多种前端和执行平台。
不足:TensorFlow并不支持双向RNN和3D卷积,同时公共版本的图定义也不支持循环和条件控制,这使得RNN的实现并不理想,因为必须要使用Python循环且无法进行图编译优化。
下载地址:www.tensorflow.org/
3. Torch
Torch自称是“一种科学计算框架,广泛支持把GPU放在首位的机器学习算法。”这里的重点在于灵活性和速度。此外,很容易与众多方面的软件包结合使用:机器学习、计算机视觉、信号处理、并行处理、图像、视频、音频和网络。它依赖一种名为LuaJIT的脚本语言,这种语言基于Lua。
Torch诞生已经有十年之久,但是真正起势得益于2015年Facebook开源了大量Torch的深度学习模块和扩展。Torch另外一个特殊之处是采用了不怎么流行的编程语言Lua(该语言曾被用来开发视频游戏)。
Torch的主要特性如下。
开发者:Facebook
底层语言:用快速的脚本语言LuaJit开发,底层是C/CUDA实现
接口语言:Lua语言
运行方式:CPU or GPU
操作系统:Windows or Linux
安装方式:需要安装Lua语言支持
支持的深度学习网络:支持大部分先进的网络
优势:对卷积网络的支持非常好。Torch通过很多非官方的扩展支持大量的RNN,同时网络的定义方法也有很多种。
不足:Torch本质上是以图层的方式定义网络的,这种粗粒度的方式使得它对新图层类型的扩展缺乏足够的支持。模型运行需要LuaJIT的支持,虽然这样做对性能的影响并不大,但却对集成造成了很大的障碍,使得它的吸引力不如Caffe/CNTK/TensorFlow等直接支持C++的框架。
下载地址:http://torch.ch/
4. PyTorch
Torch 是一个十分老牌、对多维矩阵数据进行操作的张量(tensor)库,在机器学习和其他数学密集型应用有广泛应用。但由于其语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。如今,作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。
基于Python的科学计算包,其旨在服务两类场合:
- 替代numpy发挥GPU潜能
- 一个提供了高度灵活性和效率的深度学习实验性平台
PyTorch 的特点和优势
PyTorch 提供了:
- 运行在 GPU 或 CPU 之上、基础的张量操作库
- 内置的神经网络库
- 模型训练功能
支持共享内存的多进程并发(multiprocessing )库。PyTorch 开发团队表示:这对数据载入和 hogwild 训练十分有帮助。
PyTorch 还为改进现有的神经网络,提供了更快速的方法——不需要从头重新构建整个网络。这是由于 PyTorch 采用了动态计算图(dynamic computational graph)结构,而不是大多数开源框架,比如 TensorFlow、Caffe、CNTK、Theano 等采用的静态计算图。雷锋网获知,该技术从另一个 Python 的神经网络框架——Chainer 那里借用。开发者团队还强调 PyTorch 优越的内存效率,因为它采用了定制的 GPU 内存分配器。这使得开发者的深度学习模型能够有“最大限度的内存效能”,训练比从前更大的深度神经网络。
官方链接:http://pytorch.org/
github:https://github.com/pytorch/pytorch
5. Theano
Theano是一个Python库,它允许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPU和高效符号分化操作。
Theano具有以下特点:
(a)与NumPy紧密相关(在Theano的编译功能中使用了Numpy.ndarray)
(b)透明地使用GPU(执行数据密集型计算比CPU快了140多倍)
(c)速度和稳定性的优化(即使输入的x非常小也可以得到log(1+x)正确结果)
(d)动态生成C代码(表达式计算更快)
(e)广泛的单元测试和自我验证(多种错误类型的检测和判定)
自2007年起,Theano一直致力于大型密集型科学计算研究,但它目前也很被广泛应用在课堂之上(如Montreal大学的深度学习/机器学习课程)。
Theano的主要特性如下。
底层语言:Python
接口语言:Python
运行方式:CPU or GPU
操作系统:Windows or Linux
安装方式:需要配置相关Python库 需要CUDA支持
支持的深度学习网络:支持大部分先进的网络,提供数学计算支持,网络需要自己实现,缺少写好的例子。
集成的数据集:无
优势:它引领了符号图在编程网络中使用的趋势,Theano的符号API支持循环控制,让RNN的实现更加容易且高效。而且Theano跨平台,模型能够部署到Windows环境上。
不足:启动时间长,缺乏底层接口,并且其Python解释器也很低效,对工业用户而言缺少吸引力。
下载地址:https://github.com/Theano/Theano
6. Keras
Keras是极其精简并高度模块化的神经网络库,在TensorFlow 或 Theano 上都能够运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。Keras可以说是Python版的Torch7,对于快速构建CNN模型非常方便,同时也包含了一些最新文献的算法,比如Batch Noramlize,文档教程也很全,在官网上作者都是直接给例子浅显易懂。Keras也支持保存训练好的参数,然后加载已经训练好的参数,进行继续训练。
Keras侧重于开发快速实验,用可能最少延迟实现从理念到结果的转变,即为做好一项研究的关键。
当需要使用符合如下要求的深度学习的库时,就可以考虑使用Keras:
(a)考虑到简单快速的原型法(通过总体模块性、精简性以及可扩展性);
(b)同时支持卷积网络和递归网络,以及两者之间的组合;
(c)支持任意连接方案(包括多输入多输出训练);
(d)可在CPU和GPU 上无缝运行。
下载地址:https://github.com/fchollet/keras
7. MXNET
MXNet是一个兼具效率和灵活性的深度学习框架。它允许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。其核心是动态依赖调度程序,该程序可以动态自动进行并行化符号和命令的操作。其中部署的图形优化层使得符号操作更快和内存利用率更高。该库轻量且便携带,并且可扩展到多个GPU和多台主机上。
MXNET具有以下特性:
开发者:分布式(深度)机器学习社区
底层语言:C++
接口语言:C++ Python Julia Matlab JavaScript R Scala
运行方式:CPU or GPU
操作系统:Linux OS X Windows
安装方式:需要Python和CUDA支持
支持的深度学习网络:随机储存器/动态贝叶斯网络 卷积网络 循环网络
优势:MXNet强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。MXNet整合了各种编程方法的优势最大限度地提高灵活性和效率。另外,MXNet对“云计算”友好,直接兼容S3、HDFS和Azure。
下载地址:https://github.com/dmlc/mxnet
8. DeepLearn Toolbox
DeepLearn Toolbox 是matlab的深度学习工具包。支持的深度学习网络:人工神经网络(NN),卷积神经网络(CNN),深度置信网(DBN),栈式自动编码器(SAE),卷积自动编码器(CAE)。
集成的数据集:MNIST
优势:使用Matlab实现,源码短且可读性强,适合深度学习入门学习。
不足:集成的网络构建方法及网络参数选择较少,不能自由设定网络结构和部分参数,可变性差,设计自己的网络需要大量编程。
下载地址:https://github.com/rasmusbergpalm/DeepLearnToolbox
9. CNTK
CNTK(Computational Network Tookit)的全称是计算网络工具包,它是微软的开源人工智能工具之一。它声称拥有出众的性能,无论在只有CPU的系统上运行,在只有一个CPU的系统上运行,在拥有多个GPU的系统上运行,还是在拥有多个GPU的多台机器上运行,都是如此。微软主要用它来研究语音识别,但是它同样适用于其他应用领域,比如机器翻译、图像识别、图像字幕、文本处理、语言理解和语言建模。
CNTK(Computational Network Toolkit )是一个统一的深度学习工具包,该工具包通过一个有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,其他节点表示该节点输入之上的矩阵运算。
CNTK具有以下特性:
开发者:Microsoft
底层语言:C++
接口语言:Python C/C++ 命令行
运行方式:CPU or GPU
操作系统:Windows or Linux
安装方式:安装相关依赖库并编译源码
支持的深度学习网络:前馈DNN网络 卷积网络 循环网络
优势:CNTK通过细粒度的构件块让用户不需要使用低层次的语言就能创建新的、复杂的层类型。与Caffe一样也是基于C++并且跨平台的,大部分情况下部署非常简单。同时它实现了跨多GPU 和服务器自动分化和并行化的随机梯度下降(SGD,误差反向传播)学习。
不足:CNTK不支持ARM架构,这限制了它在移动设备上的能力。
下载地址:https://github.com/Microsoft/CNTK
相关链接:https://www.cntk.ai
10. DMTK
与CNTK一样,分布式机器学习工具包(DMTK,Distributed Machine Learning Toolkit)是微软的开源人工智能工具之一。它是为大数据应用领域设计,旨在更快地训练人工智能系统。它包括三大部分:DMTK框架、LightLDA主题模型算法以及分布式(Multisense)单词嵌入算法。微软声称,在8个集群机器上,它能够“针对拥有1000多亿个权标的文档集合,训练拥有100万个主题和1000万个单词词汇表(共有10万亿个参数)的主题模型,”这个成绩是其他工具无法比拟的,这也证明了DMTK的速度有多快。
相关链接:http://www.dmtk.io
11. Deeplearning4j
Deeplearning4j是一种面向Java虚拟机(JVM)的开源深度学习库。它在分布式环境中运行,可与Hadoop和Apache Spark整合起来。它让用户可以配置深度神经网络,与Java、Scala及其他JVM语言兼容。
该项目由一家名为Skymind的商业公司管理,该公司提供收费的支持、培训和Deeplearning4j的企业发行版。
语言:Java
相关链接:http://deeplearning4j.org
12. H2O
H2O更加专注于人工智能在企业领域的应用,而不是在研究领域的应用,它的用户包括诸多大公司:第一资本、思科、尼尔森Catalina、贝宝及Transamerica。它声称让任何人都可以使用机器学习和预测分析的强大功能,解决业务问题。它可用于预测建模、风险及欺诈分析、保险分析、广告技术、医疗保健和客户情报。
它有两种开源版本:标准的H2O和Sparkling Water,后者与Apache Spark集成起来。它还提供收费的企业支持。
相关链接:http://www.h2o.ai
13. Mahout
Mahout是Apache基金会下面的一个项目,是一种开源机器学习框架。据官方网站声称,它提供三种主要的特性:用于构建可扩展算法的编程环境、面向Spark和H2O等工具的预制算法,以及名为Samsara的向量数学试验环境。使用Mahout的公司包括:Adobe、埃森哲、Foursquare、英特尔、领英、推特、雅虎及其他许多公司。可通过官方网站上所列的第三方获得专业支持。
相关链接:http://mahout.apache.org
14. MLlib
Apache Spark以速度快著称,它已成为最流行的大数据处理工具之一。MLlib是Spark的可扩展机器学习库。它与Hadoop整合起来,可与NumPy和R协同操作。它包括一大批机器学习算法,可用于分类、回归、决策树、推荐、聚类、主题建模、特性转换、模型评估、机器学习管道构建、机器学习持久性、生存分析、频繁项集、顺序模式挖掘、分布式线性代数和统计。
相关链接:https://spark.apache.org/mllib/
15. NuPIC
NuPIC由一家名为Numenta的公司管理,这是一种开源人工智能项目,基于一种名为分层式即时记忆(即HTM)的理论。实际上,HTM试图建立一种模仿人类大脑新皮层而建的计算机系统。目的在于制造“处理许多认知任务时接近或胜过人类表现”的机器。
除了开源许可证外,Numenta还提供采用商业许可证的NuPic,它还提供作为它技术底层的专利方面的许可证。
相关链接:http://numenta.org
16. OpenNN
OpenNN为深入了解人工智能的研究人员和开发人员而设计,这是一种用于实现神经网络的C++编程库。主要特性包括:深度架构和卓越性能。官方网站上有全面的说明文档,包括解释神经网络基础知识的入门教程。可通过Artelnics获得OpenNN的收费支持,总部位于西班牙的这家公司主攻预测分析。
相关链接:http://www.opennn.net
17. OpenCyc
OpenCyc由一家名为Cycorp的公司开发,它让用户可以访问Cyc知识库和常识推理引擎。它包括239000多个术语、约2093000个三元组以及大约69000个owl:sameAs链接(指向外部语义数据命名空间)。它用于丰富域名建模、语义数据整合、文本理解、特定领域专家系统和游戏人工智能。这家公司还提供Cyc的另外两个版本:一个是非开源免费版本,面向研究人员;另一个面向企业用户,需要收费。
相关链接:http://www.cyc.com/platform/opencyc/
18. Oryx 2
Oryx 2建立在Apache Spark和Kafka上,这是一种专门的应用开发框架,面向大规模的机器学习。它使用了一种独特的lambda架构,有三个层次。开发人员可使用Oryx 2来构建新的应用程序,它还包括一些预制应用程序,处理常见的大数据任务,比如协作过滤、分类、回归和聚类。大数据工具厂商Cloudera建立了最初的Oryx 1项目,一直大力参与持续开发工作。
相关链接:http://oryx.io
19. PredictionIO
今年2月份,Salesforce收购了PredictionIO,后来在7月份,它把该平台连同商标一起捐献给了Apache基金会,该基金会将它列为孵化器项目。所以,虽然Salesforce使用PredictionIO技术来完善自己的机器学习功能,但是开源版本方面的工作也会继续下去。它可帮助用户构建拥有机器学习功能的预测引擎,这些功能可用来部署实时响应动态查询的Web服务。
相关链接:https://prediction.io
20. SystemML
SystemML最初由IBM开发,现在它是Apache旗下的一个大数据项目。它提供了一种高度可扩展的平台,可以实施用R或类似Python的语法编写的高级运算和算法。企业已经在用它来跟踪汽车维修方面的客户服务,引导机场客流量,或者将社交媒体数据与银行客户联系起来。它可以在Spark或Hadoop上运行。
相关链接:http://systemml.apache.org
github 上一些工具:
GitHub 上 57 款最流行的开源深度学习项目
https://juejin.im/entry/583ff5b00ce46300576427d2
机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1)
https://github.com/ty4z2008/Qix/blob/master/dl.mdhttps://github.com/ty4z2008/Qix/blob/master/dl.md
参考
http://www.52ml.net/12043.html
http://blog.csdn.net/myarrow/article/details/50608334
http://os.51cto.com/art/201609/517610.htm