有太多深度学习库可供选择。
哪些是值得学习的优秀专业库,哪些是个人项目项目应该避免的?很难区分。
在这篇文章中,您将发现应该考虑学习和用于您自己的深度学习项目的前沿深度学习库。
使用我的新书《Python深度学习》 kick-start您的项目,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。

热门深度学习库
照片作者:Nikki,部分权利保留。
概述
在这篇文章中,您将发现以下深度学习库。它们都是开源的,使用各种不同的许可。
- Theano
- Torch
- Caffe
- DeepLearning4J
还有许多其他优秀的库和平台。其他一些值得一提的包括 Google 的 TensorFlow,R 语言中的 darch,JavaScript 中的 Convnet.js(用于学习),Julia 语言中的 Mocha,Microsoft 的 CNTK 和 H2O Web API。
Theano
Theano 是由蒙特利尔大学的 LISA 组织(现为 MILA)在 Yoshua Bengio 的领导下开发的一个 Python 框架,用于前沿深度学习算法的研究和开发。
它更像是一个数学表达式编译器,您可以象征性地定义您想要的内容,然后该框架会将您的程序编译为在 GPU 或 CPU 上高效运行。
它是一个研究平台,而不是一个深度学习库。您必须自己做大量工作来创建所需的模型。例如,没有神经网络类。
尽管如此,有一个优秀的深度学习教程,展示了如何创建用于深度学习的类和函数。例如,它提供了分步示例来创建以下深度学习算法:
Theano 实际上是一个生态系统,在实践中您不会直接使用 Theano。有一个长列表构建在 Theano 之上的库,提供方便的包装器 API。一些更受欢迎的项目包括:
这些本身正在成为非常大的项目,为底层的 Theano 平台提供了有用的 API,大大加快了您构建模型的速度。
如果您是 Python 开发人员,并且对更广泛的深度学习或研究感兴趣,那么这个平台非常适合您。
资源
- Theano 网页
- Theano 用户组(Google Group)
- Theano GitHub 项目
Python 深度学习需要帮助吗?
参加我的免费为期两周的电子邮件课程,发现 MLP、CNN 和 LSTM(附代码)。
立即点击注册,还将免费获得本课程的 PDF 电子书版本。
Torch
Torch(称为 Torch7,使用奇特的版本号)是 Ronan Collobert、Clement Farabet 和 Koray Kavukcuoglu 开发的一个 Lua 深度学习框架,用于深度学习算法的研究和开发。它被纽约大学 CILVR 实验室(Yann LeCun 的所在地)使用和推广。
Torch 被 Facebook AI 实验室、Google DeepMind、Twitter 等公司使用并进一步开发。
在底层,Torch 使用 C/C++ 库以及用于 GPU 的 CUDA。它的目标是速度,同时采用 C 友好的 Lua 语言提供一个不那么令人生畏的界面。
Torch 的目标是在构建科学算法时获得最大的灵活性和速度,同时使过程极其简单。
有大量的文档,但杂乱无章。Torch 的流行应用是用于带有卷积神经网络的监督图像问题,以及用于深度强化学习的更复杂领域中的智能体。
如果您主要对强化学习感兴趣,Torch 可能是适合您的平台。
资源
- Torch 官方主页
- Torch GitHub 项目
- Torch 文档和备忘单 (社区 Wiki)
Caffe
Caffe 是由加州大学伯克利分校视觉与学习中心 (Berkeley Vision and Learning Center) 的 Yangqing Jia 开发的一个 Python 深度学习库,用于监督式计算机视觉问题。
主要重点是卷积神经网络,它可能是该领域的领导者。
该库的一大优势是可从 Caffe Model Zoo 下载并立即使用的预训练网络数量。这包括可以在标准计算机视觉数据集上达到世界级结果的前沿模型。
例如,这里有一些关于世界级模型的教程:
如果您主要对卷积神经网络和图像问题感兴趣,Caffe 可能是适合您的平台。
资源
DeepLearning4J
DeepLearning4J(简称 DL4J)是由 Adam Gibson 为商业深度学习项目开发的 Java(和 JVM 语言)深度学习框架。
DL4J 是一个基于 JVM、行业重点、商业支持、分布式深度学习框架,旨在在合理的时间内解决涉及海量数据的问题。
DeepLearning4J 是一个强大的平台,它提供一套前沿的深度学习算法,但不限于:
- 深度信念网络
- 堆叠去噪自动编码器
- 卷积神经网络
- 长短期记忆单元
- 循环神经网络
该文档相当不错,涵盖了包括算法本身的一些理论和代码示例在内的各种主题。
它具有与整个 Java 生态系统协同工作的优势,Java 是商业软件开发中的主要平台,包括 JVM 上的其他语言(例如 Scala)以及大数据平台(Hadoop 和 Spark)。
资源
深度学习工具汇总
许多人已经对深度学习库和工具进行了汇总。本节列出了一些这些汇总和其他资源,您可以使用它们来更深入地了解深度学习工具。
- KDDNuggets 有一个关于深度学习工具的汇总,标题为 Popular Deep Learning Tools – A Review,其中包含 2015 年的一项调查结果。看来 Pylearn2 和 Theano 最受欢迎。
- DL4J 对所有顶级工具进行了比较,标题为 DL4J vs. Torch vs. Theano vs. Caffe vs. TensorFlow。
- Quora 帖子 目前为止处理大量数据的最佳深度学习库是什么? 作为一个概述,非常具有启发性。
- Teglor 上有一个很好的汇总,标题为 Deep Learning Libraries by Language。
- DeepLearning.net 有一个很好的深度学习软件列表。
- 在 reddit 上有一个很棒的讨论,标题为 深度神经网络的最佳框架是什么?
- 名为 100 Best GitHub: Deep Learning 的开源深度学习项目列表。
总结
在这篇文章中,您将发现最受欢迎的深度学习工具和库。
具体来说,您学习了
- Theano
- Torch
- Caffe
- DeepLearning4J
您是否使用过这些工具中的一个或多个?请在评论中告诉我您的想法。
您对深度学习或本文中列出的库有任何疑问吗?请在评论中提问,我将尽力回答。
对于使用 CNN 进行对象检测,您更喜欢哪个:caffe 还是 keras?
我的重点是使用和教授 Keras。
Tensorflow 怎么样?
我猜我写这篇帖子的时候 TF 还没有成为一个大问题。
我正在 C++ 中使用 Tensorflow,它非常棒。我也推荐它。
感谢您的建议。
嗨,我在视频处理问题中使用 Caffe。我不太清楚事物之间的关系以及如何使用预训练模型。你能帮我吗?
抱歉,我没有关于 caffe 的资料。
Scikit-learn 怎么样?您能告诉我它与您提到的其他库相比的效率吗?
它很棒,但不提供深度学习。
我想学习 C++ 与深度学习。您知道任何用于深度学习的开源 C++ API 吗?
抱歉,我没有 C++ 示例。