深度学习框架

每个框架都以不同的方式构建,以用于不同的目的。在这里,我们将介绍八大深度学习框架,以便您更好地了解哪个框架非常适合您,或者在解决您的业务挑战时更方便。

TensorFlow

深度学习框架

TensorFlow可以说是最好的深度学习框架之一,并且已经被空中客车,Twitter,IBM和其他几个巨头采用,这主要归功于其高度灵活的系统架构。

最着名的TensorFlow用例是谷歌翻译,加上自然语言处理,文本分类/摘要,语音/图像/手写识别,预测和标记等功能。

TensorFlow可在桌面和移动设备上使用,还支持Python,C ++和R等语言,以创建深度学习模型和包装库。

TensorFlow附带两个广泛使用的工具:

  • TensorBoard用于网络建模和性能的有效数据可视化。
  • TensorFlow Serving 用于快速部署新算法/实验,同时保留相同的服务器架构和API。它还提供与其他TensorFlow模型的集成,这与传统实践不同,可以扩展为其他模型和数据类型。

如果您迈出深度学习的第一步,那么选择TensorFlow是明智的选择,因为它基于Python,受Google支持,并附带文档和演练来指导您。
TensorFlow的局限性
TensorFlow目前的一个主要缺点是,构建一个新的深度学习体系结构相对较慢(初始化一个体系结构需要几秒钟)。因此,在TensorFlow中构建一些复杂的、能够动态改变结构的深层架构并不方便。其中一个架构是TreeLSTM,它使用英语句子的语法解析树来执行需要理解自然语言的任务。由于每个句子都有不同的解析树,所以每个句子都需要稍微不同的体系结构。图1说明了TreeLSTM体系结构。
深度学习框架

图1 。树形结构的概念描述。对于每个输入数据点,树的形状是不同的,因此必须为每个示例构造一个不同的计算图。

虽然这样的模型可以在TensorFlow中实现,但是由于当前TensorFlow API的限制,这样做需要很大的灵活性。新的框架,如Chainer、DyNet和PyTorch,承诺通过使新架构的构建足够轻量级,从而能够轻松地构建TreeLSTM之类的模型,从而消除这些障碍。幸运的是,TensorFlow开发人员已经在开发对基本TensorFlow API(如TensorFlow Eager)的扩展,这将使动态架构的构建更加容易。

Caffe

深度学习框架

Caffe是一个深度学习框架,支持C,C ++,Python和MATLAB等接口以及命令行界面。众所周知,它的速度和可转换性及其在建模卷积神经网络(CNN)中的适用性。使用Caffe的C ++库(附带Python接口)的最大好处是能够从深度网络存储库Caffe Model Zoo访问可用网络,这些网络经过预先培训并可立即使用。在建模CNN或解决图像处理问题时,这应该是您的首选库。

Caffe最大的卖点是速度。它每天可以使用单个 Nvidia K40 GPU 处理超过 6000 万张图像。这是 1 毫秒/图像的推理和 4 ms/图像的学习 – 并且最近的库版本会更快。

Caffe是一个很受欢迎的用于视觉识别的深度学习网络。然而,Caffe不支持TensorFlow或CNTK中发现的细粒度网络层。考虑到体系结构、对递归网络的整体支持以及语言建模,它非常差,而且必须使用低级语言来建立复杂的层类型。

Microsoft Cognitive Toolkit / CNTK

深度学习框架

Microsoft Cognitive Toolkit(以前称为CNTK)通常以易于培训和跨服务器的流行模型类型而闻名,是一个开源深度学习框架,用于培训深度学习模型。它执行有效的卷积神经网络和图像,语音和基于文本的数据培训。与Caffe类似,它受Python,C ++和命令行界面等接口的支持。

鉴于其资源的连贯使用,可以使用工具包轻松实现强化学习模型或生成对抗网络(GAN)。众所周知,与在Theano或TensorFlow等工具包上运行时,在多台机器上运行时,可提供更高的性能和可扩展性。

与Caffe相比,在发明新的复杂层类型时,由于构建块的精细粒度,用户不需要以低级语言实现它们。Microsoft Cognitive Toolkit支持RNN和CNN类型的神经模型,因此能够处理图像,手写和语音识别问题。目前,由于缺乏对ARM架构的支持,其在移动设备上的功能相当有限。

Torch / PyTorch

深度学习框架

Torch是一个科学的计算框架,为机器学习算法提供了广泛的支持。它是一个基于lua的深度学习框架,广泛应用于Facebook、Twitter和谷歌等行业巨头。它使用CUDA和C/ c++库进行处理,基本上是为了扩展构建模型的生产,并提供整体的灵活性。

到目前为止,PyTorch已经在深度学习框架社区中得到了高水平的采用,并且被认为是TensorFlow的竞争对手。PyTorch基本上是Torch深度学习框架的一个端口,用于构建深度神经网络和执行复杂程度高的张量计算。

与Torch相反,PyTorch运行在Python上,这意味着任何对Python有基本了解的人都可以开始构建自己的深度学习模型。

考虑到PyTorch框架的体系结构风格,与Torch相比,整个深度建模过程要简单得多,而且透明得多。

MXNet

深度学习框架

MXNet(发音为mix-net)是一个由Python、R、c++和Julia支持的深度学习框架,专门为高效、高效和灵活性而设计。

MXNet的美妙之处在于,它使用户能够用各种编程语言编写代码。这意味着你可以用任何一种你觉得舒服的语言来训练你的深度学习模型,而不必从头学新东西。使用c++和CUDA编写的后端,MXNet能够扩展和处理大量的gpu,这使得它对于企业来说是不可或缺的。例如:Amazon使用MXNet作为其深度学习的参考库。

MXNet支持长短时记忆(LTSM)网络以及RNNs和CNNs。
这个深度学习框架以其在成像、手写/语音识别、预测和NLP方面的能力而闻名。

Chainer

深度学习框架

Chainer功能强大、动态直观,是一个基于python的神经网络深度学习框架,由run策略设计。与使用相同策略的其他框架相比,您可以在运行时修改网络,从而允许您执行任意控制流语句。
Chainer支持CUDA计算和多gpu。该深度学习框架主要用于使用RNNs和CNNs进行情感分析、机器翻译、语音识别等。

Keras

深度学习框架

Keras神经网络库(具有Python支持接口)以最小化著称,它支持卷积和递归网络,这些网络可以在TensorFlow或Theano上运行。该库是用Python编写的,并作为其卖点进行了快速实验。

由于 TensorFlow 接口有点具有挑战性,再加上它是一个低级库,对于新用户来说可能很复杂,Keras 的构建是为了通过构建快速原型设计来提供简单的接口有效的神经网络,可以使用 TensorFlow。

轻巧、易于使用,并且通过堆叠多个层构建深度学习模型非常简单:简而言之,这就是 Keras。这就是 Keras 是 TensorFlow 核心 API 的一部分的原因。

Keras的主要用途是分类、文本生成和摘要、标记和翻译,以及语音识别等。如果您碰巧是一名具有Python经验的开发人员,并且希望深入学习,那么您一定要查看Keras。

Deeplearning4j

深度学习框架

通过迭代减少、微服务体系结构适应以及分布式cpu和gpu进行并行培训是Deeplearning4j深度学习框架的一些显著特性。它是用Java和Scala开发的,还支持其他JVM语言。

作为一个商业的、以行业为中心的分布式深度学习平台,这种深度学习框架的最大优势在于,您可以将整个Java生态系统结合起来执行深度学习。还可以在Hadoop和Spark之上管理它,以编排多个主机线程。DL4J使用MapReduce来训练网络,同时依赖于其他库来执行大型矩阵操作。

Deeplearning4j通过RBM、DBN、卷积神经网络(CNNs)、递归神经张量网络(RNTNs)和长短时记忆(LTSM)提供了深度网络支持。

由于这个深度学习框架是用Java实现的,因此与Python相比,它的效率要高得多。当涉及到使用多个gpu的图像识别任务时,它和Caffe一样快。该框架在图像识别、欺诈检测、文本挖掘、词性标注和自然语言处理方面显示出无可比拟的潜力。

使用Java作为核心编程语言,如果您正在寻找一种将深度学习模型部署到生产环境的健壮而有效的方法,那么您当然应该选择这种深度学习框架。

结论

很明显,深度学习的出现开启了许多机器学习和人工智能的实际应用案例。通过深度学习,以最简单的方式分解任务,以最有效的方式辅助机器成为可能。

上面列出的哪个深度学习框架最适合您的业务需求?这个问题的答案取决于很多因素,然而,如果你只是想开始,那么像TensorFlow或Chainer这样的基于python的深度学习框架是理想的。

如果您正在寻找更多的东西,那么在为您的业务需求选择一个深度学习框架之前,应该始终考虑速度、资源需求、使用以及经过培训的模型的一致性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程