深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。 

深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1]

深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。 [1]

下表比较了用于深度学习的著名软件框架、库和计算机程序。

「技术选型」深度学习软件如何选择?_机器学习

「技术选型」深度学习软件如何选择?_TensorFlow_02

「技术选型」深度学习软件如何选择?_深度学习_03

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