深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1]
深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。 [1]
下表比较了用于深度学习的著名软件框架、库和计算机程序。
Deep-learning software by name
软件 | Apache MXNet | Apache SINGA | BigDL | Caffe |
创建者 | Apache Software Foundation | Apache Software Foundation | Jason Dai (Intel) | Berkeley Vision and Learning Center |
初始版本 | 2015 | 2015 | 2016 | 2013 |
软件许可证 | Apache 2.0 | Apache 2.0 | Apache 2.0 | BSD |
开源 | Yes | Yes | Yes | Yes |
平台 | Linux, macOS, Windows,[37][38] AWS, Android,[39] iOS, JavaScript[40] | Linux, macOS, Windows | Apache Spark | Linux, macOS, Windows[2] |
编写语言 | Small C++ core library | C++ | Scala | C++ |
接口 | C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl, Clojure | Python, C++, Java | Scala, Python | Python, MATLAB, C++ |
OpenMP 支持 | Yes | No | Yes | |
OpenCL 支持 | On roadmap[41] | Supported in V1.0 | Under development[3] | |
CUDA 支持 | Yes | Yes | No | Yes |
自动分化 | Yes[42] | ? | Yes | |
预训练模型 | Yes[43] | Yes | Yes | Yes[4] |
RNN | Yes | Yes | Yes | Yes |
CNN | Yes | Yes | Yes | Yes |
RBM/DBNs | Yes | Yes | No | |
并行执行(多节点) | Yes[44] | Yes | ? | |
积极发展 | Yes | No[5] |
软件 | Chainer | Deeplearning4j | Dlib | Flux |
创建者 | Preferred Networks | Skymind engineering team; Deeplearning4j community; originally Adam Gibson | Davis King | Mike Innes |
初始版本 | 2015 | 2014 | 2002 | 2017 |
软件许可证 | BSD | Apache 2.0 | Boost Software License | MIT license |
开源 | Yes | Yes | Yes | Yes |
平台 | Linux, macOS | Linux, macOS, Windows, Android (Cross-platform) | Cross-platform | Linux, MacOS, Windows (Cross-platform) |
编写语言 | Python | C++, Java | C++ | Julia |
接口 | Python | Java, Scala, Clojure, Python (Keras), Kotlin | C++ | Julia |
OpenMP 支持 | No | Yes | Yes | |
OpenCL 支持 | No | No[7] | No | |
CUDA 支持 | Yes | Yes[8][9] | Yes | Yes |
自动分化 | Yes | Computational Graph | Yes | Yes |
预训练模型 | Yes | Yes[10] | Yes | Yes[12] |
RNN | Yes | Yes | No | Yes |
CNN | Yes | Yes | Yes | Yes |
RBM/DBNs | No | Yes | Yes | No |
并行执行(多节点) | Yes | Yes[11] | Yes | Yes |
积极发展 | No[6] | Yes |
软件 | Intel Math Kernel Library |
Keras | MATLAB + Deep Learning Toolbox | Microsoft Cognitive Toolkit (CNTK) | Neural Designer |
创建者 | Intel | François Chollet | MathWorks | Microsoft Research | Artelnics |
初始版本 | 2015 | 2016 | |||
软件许可证 | Proprietary | MIT license | Proprietary | MIT license[26] | Proprietary |
开源 | No | Yes | No | Yes | No |
平台 | Linux, macOS, Windows on Intel CPU[14] | Linux, macOS, Windows | Linux, macOS, Windows | Windows, Linux[27] (macOS via Docker on roadmap) | Linux, macOS, Windows |
编写语言 | Python | C, C++, Java, MATLAB | C++ | C++ | |
接口 | C[15] | Python, R | MATLAB | Python (Keras), C++, Command line,[28] BrainScript[29] (.NET on roadmap[30]) | Graphical user interface |
OpenMP 支持 | Yes[16] | Only if using Theano as backend | No | Yes[31] | Yes |
OpenCL 支持 | No | Can use Theano, Tensorflow or PlaidML as backends | No | No | No |
CUDA 支持 | No | Yes | Train with Parallel Computing Toolbox and generate CUDA code with GPU Coder[21] | Yes | No |
自动分化 | Yes | Yes | Yes[22] | Yes | ? |
预训练模型 | No | Yes[18] | Yes[23][24] | Yes[32] | ? |
RNN | Yes[17] | Yes | Yes[23] | Yes[33] | No |
CNN | Yes[17] | Yes | Yes[23] | Yes[33] | No |
RBM/DBNs | No[19] | Yes | No[34] | No | |
并行执行(多节点) | No | Yes[20] | With Parallel Computing Toolbox[25] | Yes[35] | ? |
积极发展 | Yes | Yes | No[36] |
软件 | OpenNN | PlaidML | PyTorch | TensorFlow |
创建者 | Artelnics | Vertex.AI,Intel | Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan (Facebook) | Google Brain |
初始版本 | 2003 | 2017 | 2016 | 2015 |
软件许可证 | GNU LGPL | AGPL | BSD | Apache 2.0 |
开源 | Yes | Yes | Yes | Yes |
平台 | Cross-platform | Linux, macOS, Windows | Linux, macOS, Windows | Linux, macOS, Windows,[47] Android |
编写语言 | C++ | Python, C++, OpenCL | Python, C, C++, CUDA | C++, Python, CUDA |
接口 | C++ | Python, C++ | Python, C++, Julia | Python (Keras), C/C++, Java, Go, JavaScript, R,[48] Julia, Swift |
OpenMP 支持 | Yes | ? | Yes | No |
OpenCL 支持 | No | Some OpenCL ICDs are not recognized | Via separately maintained package[45][46][46] | On roadmap[49] but already with SYCL[50] support |
CUDA 支持 | Yes | No | Yes | Yes |
自动分化 | ? | Yes | Yes | Yes[51] |
预训练模型 | ? | Yes | Yes | Yes[52] |
RNN | No | Yes | Yes | Yes |
CNN | No | Yes | Yes | Yes |
RBM/DBNs | No | Yes | ||
并行执行(多节点) | ? | Yes | Yes | Yes |
积极发展 | Yes | Yes | Yes |
软件 | Theano | Torch | Wolfram Mathematica |
创建者 | Université de Montréal | Ronan Collobert, Koray Kavukcuoglu, Clement Farabet | Wolfram Research |
初始版本 | 2007 | 2002 | 1988 |
软件许可证 | BSD | BSD | Proprietary |
开源 | Yes | Yes | No |
平台 | Cross-platform | Linux, macOS, Windows,[58] Android,[59] iOS | Windows, macOS, Linux, Cloud computing |
编写语言 | Python | C, Lua | C++, Wolfram Language, CUDA |
接口 | Python (Keras) | Lua, LuaJIT,[60] C, utility library for C++/OpenCL[61] | Wolfram Language |
OpenMP 支持 | Yes | Yes | Yes |
OpenCL 支持 | Under development[53] | Third party implementations[62][63] | No |
CUDA 支持 | Yes | Yes[64][65] | Yes |
自动分化 | Yes[54][55] | Through Twitter's Autograd[66] | Yes |
预训练模型 | Through Lasagne's model zoo[56] | Yes[67] | Yes[68] |
RNN | Yes | Yes | Yes |
CNN | Yes | Yes | Yes |
RBM/DBNs | Yes | Yes | Yes |
并行执行(多节点) | Yes[57] | Yes[58] | Yes[69] |
积极发展 | No | No | Yes |
- ^许可证这里是一个摘要,并不是完整的许可证声明。一些库可能在不同的许可证下在内部使用其他库
机器学习模型的兼容性比较
Format Name | 设计目标 | 与其他格式比较 | 自包含 DNN 模型 |
预处理和后处理 | 用于调整和校准的运行时配置 | 款模型互连 | 通用平台 |
TensorFlow, Keras, Caffe, Torch, ONNX, | 算法训练 | No | 没有/单 独的文件 在大多数格式 |
No | No | No | Yes |
ONNX | 算法训练 | Yes | 没有/单 独的文件在大多数格式 |
No | No | No | Yes |