深度学习框架初探
Posted 北科大305实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习框架初探相关的知识,希望对你有一定的参考价值。
机器学习范式不断发展。关键是要转向开发在移动设备上运行的机器学习模型,以便使应用程序变得更智能和更智能化。深度学习使解决复杂问题变得可能。
鉴于深度学习是执行更高级复杂任务的关键,成功构建和部署它们被证明是全球数据科学家和数据工程师面临的艰巨挑战。今天,我们掌握了大量的框架,使我们能够开发工具,提供更好的抽象级别,同时简化困难的编程挑战。
为了不同的目的,每个框架都以不同的方式构建。在这里,我们看一下排名前八的深度学习框架,以便您更好地了解哪个框架将完美融入或适用于解决业务挑战。
让我先看下他们都有什么特性吧
Tensorflow
TensorFlow可以说是最好的深度学习框架之一,并且已经被Airbus,Twitter,IBM等几家巨头所采用,主要原因在于其高度灵活的系统架构。
TensorFlow最著名的使用案例是Google Translate,加上自然语言处理,文本分类/汇总,语音/图像/手写识别,预测和标记等功能。
TensorFlow可在桌面和移动设备上使用,并且还支持诸如Python,C ++和R等语言,以创建深度学习模型以及封装库。
TensorFlow附带两个广泛使用的工具:
TensorBoard用于网络建模和性能的有效数据可视化。TensorFlow服务于快速部署新算法/实验,同时保留相同的服务器体系结构和API。它还提供了与其他TensorFlow模型的集成,这与传统实践不同,并且可以扩展为服务于其他模型和数据类型。
如果您正在迈向深入学习的第一步,那么选择TensorFlow是一件简单的事情,因为它基于Python,得到了Google的支持,并且加载了文档和演练来指导您。
Caffe
Caffe是一个深度学习框架,支持C,C ++,Python和MATLAB等界面以及命令行界面。它以其速度和可移植性及其在卷积神经网络(CNN)建模中的适用性而闻名。使用Caffe的C ++库(带有Python接口)的最大好处是可以从深度网络库Caffe Model Zoo访问可用网络,这些网络是经过预先训练并可立即使用的。当涉及到建模CNN或解决图像处理问题时,这应该成为您的首选库。
Caffe最大的USP是速度。它可以使用单个Nvidia K40 GPU每天处理6000多万张图像。这是1毫秒/图像的推理和4毫秒/图像的学习 - 而最近的库版本更快。
Caffe是一个流行的视觉识别深度学习网络。但是,Caffe不支持像TensorFlow或CNTK中那样的精细网络层。鉴于架构,对经常性网络的整体支持以及语言建模相当糟糕,并且建立复杂的图层类型必须以低级语言完成。
Microsoft Cognitive Toolkit
Microsoft Cognitive Toolkit(以前称为CNTK)是一种开源的深度学习框架,用于培养深度学习模型,这一模式以简单的训练和流行的模型类型跨服务器而广为人知。它执行高效的卷积神经网络和训练图像,语音和基于文本的数据。与Caffe类似,它由诸如Python,C ++和命令行界面等接口支持。
考虑到资源的一致性使用,可以使用工具包轻松完成强化学习模型或生成对抗网络(GAN)的实施。与在多台机器上运行时的Theano或TensorFlow等工具包相比,它提供更高的性能和可扩展性。
与Caffe相比,当涉及到发明新的复杂图层类型时,由于构建块的细粒度,用户无需使用低级语言来实现它们。Microsoft Cognitive Toolkit支持RNN和CNN类型的神经模型,因此能够处理图像,手写和语音识别问题。目前,由于ARM架构缺乏支持,其在移动设备上的功能相当有限。
Torch/PyTorch
Torch是一个科学计算框架,为机器学习算法提供广泛的支持。这是一个基于Lua的深度学习框架,广泛应用于Facebook,Twitter和Google等行业巨头之中。它采用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,这对企业来说是不可或缺的。案例:亚马逊采用MXNet作为深度学习的参考资料库。
MXNet支持长短期记忆(LTSM)网络以及RNN和CNN。
这种深度学习框架以其在成像,手写/语音识别,预测和NLP方面的功能而闻名。
Deeplearning4j
作为一个商业化的,以行业为中心的分布式深度学习平台,该深度学习框架的最大优势在于,您可以将整个Java生态系统汇集在一起以执行深度学习。它也可以在Hadoop和Spark之上进行管理,以编排多个主机线程。DL4J使用MapReduce来训练网络,同时依赖其他库来执行大型矩阵操作。
Deeplearning4j通过RBM,DBN,卷积神经网络(CNN),递归神经网络(RNN),递归神经张量网络(RNTN)和长短期记忆(LTSM)提供深度网络支持。
由于这个深度学习框架是用Java实现的,与Python相比,它更高效。当涉及到使用多个GPU的图像识别任务时,它与Caffe一样快。该框架为图像识别,欺诈检测,文本挖掘,词类标注和自然语言处理展示了无与伦比的潜力。
如果您使用Java作为您的核心编程语言,并且您正在寻找将深度学习模型部署到生产环境的强大而有效的方法,您当然应该选择这个深度学习框架。
最后
当然是我们要讲的主角Keras
以极简主义著称,Keras神经网络库(带有Python支持接口)支持能够在TensorFlow或Theano上运行的卷积网络和循环网络。该库是用Python编写的,并且作为其USP进行快速实验开发。
由于事实上TensorFlow界面有点挑战性,并且这是一个低层次的库,可能对新用户来说错综复杂,Keras的构建是为了通过构建有效的快速原型来提供一个简单的界面可以与TensorFlow协同工作的神经网络。
轻量级,易于使用,并且通过堆叠多个层来构建深度学习模型非常简单——这就是Keras。这就是Keras成为TensorFlow核心API一部分的原因。
Keras的主要用途是分类,文本生成和汇总,标记和翻译,以及语音识别等。如果你碰巧是一名有Python经验的开发人员,并希望深入学习,Keras你应该看看。
keras凭借着高简洁性
和易上手性在开源框架中火了起来,在下一讲中我们会讲如何使用keras进行深度学习
以上是关于深度学习框架初探的主要内容,如果未能解决你的问题,请参考以下文章