一、TensorFlow
TensorFlow由GoogleBrain团队的研究人员和工程师开发。它是深度学习领域中最常用的软件库(尽管其他人正在迅速赶上)。
TensorFlow如此受欢迎的最大原因是,它支持多种语言来创建深度学习模型。比如Python,C++和R语言,它有适当的文档的演练指导。制作TensorFlow有很多组件,其中比较突出的两个是:
1. TensorBoard:使用数据流图帮助实现有效的数据可视化
2. TensorFlow:用于快速部署新算法/实验
TensorFlow的灵活架构使我们能够在一个或者多个CPU(以及GPU)上部署我们的深度学习模型。以下是TensorFlow的几个常见用例:
1. 基于文本的应用程序:语言检测、文本摘要
2. 图像识别:图像字幕、人脸识别、物体检测
3. 声音识别
4. 时间序列分析
5. 视频分析
从以下综合教程中学习如何使用TensorFlow构建神经网络模型
An Introduction to Implementing NeuralNetworks using TensorFlow
TensorFlow tutorials
二、Keras
对于Python爱好者来说,Keras是你开始深度学习之旅的完美框架。Keras是用Python编写的,可以运行在TensorFlow(以及CNTK和Theano)之上。TensorFlow接口可能有点挑战性,因为它是一个低级库,新用户可能会很难理解某些实现。另一方面,Keras是一个高级API,开发的重点是实现快速实验。因此,如果想要快速结果,Keras将自动处理核心任务并生成输出。Keras支持卷积神经网络和递归神经网络。它可以在CPU和GPU上无缝运行。同时,Keras有助于深度学习初学者正确理解复杂的模型,它旨在最大限度地减少用户操作,并使模型非常容易理解
Keras有多种架构,如下所述,用于解决各种各样的问题
1. VGG16
2. VGG19
3. InceptionV3
4. Mobilenet和其他更多
你可以参考官方Keras文档,以详细了解框架的工作原理:https://keras.io/
仅仅使用一行代码就能够安装Keras:
想要更进一步是如何使用Keras实现神经网络的可以查看:
OptimizingNeural Networks using Keras
三、PyTorch
PyTorch是我所研究的所有框架中最灵活的,它是Torch深度学习框架的一个端口,可用于构建深度神经网络和执行Tensor计算。Torch是一个基于Lua的框架,而PyTorch是在Python上运行的,使用动态计算图,它的Autogard软件包从tensors中构建计算图并自动计算梯度。Tensors是多维数组,就像numpy的ndarrays一样,也可以在GPU上运行。
PyTorch不是使用具有特定功能的预定义图形,而是为我们提供了一个构建计算图形的框架,甚至可以在运行时更改它们。这对于我们不知道在创建神经网络时应该需要多少内存的情况很有用。
你可以使用PyTorch处理各种深度学习挑战,包括:
1. 图像(检测、分类等)
2. 文本(NLP)
3. 强化学习
关于PyTorch的安装步骤和利用PyTorch构建你的第一个神经网络,可以参考以下文档:
Learn How to Build Quick & AccruateNeural Networks using PyTorch-4 Awesome Case Studies
PyTorch tutorials
四、Caffe
Caffe是面向图像处理领域的另一种流行的深度学习框架。作者是贾扬清,加州大学伯克利的博士,现就职于阿里巴巴,担任技术副总裁岗位,领导大数据计算平台的研发工作。需要注意的是,Caffe对循环网络和语言建模的支持不如上述三个框架。但是,Caffe脱颖而出的是处理和学习图像的速度。这很容易成为主要的USP。(USP指的是UniqueSelling Proposition,又称创意理论,其特点是必须向受众陈述产品的特点,同时这个特点必须是独特的、必须能够引起销售)
Caffe为C、C++、Python、Matlab等接口以及传统的命令行提供了坚实的支持。Caffe Model Zoo(大量的在大数据集上预训练的可供下载的模型)框架允许我们访问可用于解决深度学习问题的预训练网络、模型和权重。这些模型适用于以下任务:
1. 简单回归
2. 大规模的视觉分类
3. 用于图像相似性的暹罗网络(Siamese Networks)
4. 语音和机器人应用
你可以查看Caffe的安装和文档以获取更多详细信息。
五、DeepLearning4j
对于Java程序员,这是理想的深度学习框架。DeepLearning4j在java中实现,因此与Python相比更高效,它使用称为ND4J的张量库,提供了处理n维数组的能力。这个框架还支持GPU和CPU。
DeepLearning4j将加载数据和训练算法的任务视为单独的过程,这种功能分离提供了很大的灵活性。它同时也适用于不同的数据类型:
1. 图片
2. CSV
3. 纯文本等
你可以使用DeepLearning4j构建的深度学习模型是:
1. 卷积神经网络(CNN)
2. 递归神经网络(RNN)
3. 长短记忆(LSTM)和许多其他架构
你可以查看DeepLearning4j的安装和文档以获取更多详细信息。
七、五个深度学习框架的对比
我们已经介绍了五个最流行的深度学习框架。每个都有它自己独特的功能集,有些框架可以很好地处理图像数据,但无法解析文本数据。其他框架在图像和文本数据方面表现良好,但其内部工作可能难以理解。下面我们将使用以下标准比较我们的五个深度学习框架:
1. 社区支持
2. 它们用到的语言
3. 接口
4. 支持预训练模型