社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

让你捷足先登的深度学习框架

大数据文摘 • 1 年前 • 366 次点击  

大数据文摘授权转载自数据派THU

作者:陈之炎


对于据科学的初学者来说,利用开源的深度学习框架,可以大幅度简化复杂的大规模度学习模型的实现过程。在深度学习框架下构建模型,无需花费几天或几周的时间从头开始编写代码,便可以轻松实现诸如卷积神经网络这样复杂的模型。在本文中,将介绍几种非常有用的深度学习框架、它们的优点以及应用,通过对每个框架进行比较,研发人员了解如何有选择地使用它们,高效快捷完成项目任务。


深度学习框架概


深度学习框架是一种界面、库或工具,它使编程人员在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。


利用恰当的框架可以快速构建模型,而无需编写数百行代码,一个良好的深度学习框架具备以下关键特征:


  • 优化的性能

  • 易于理解和编码

  • 良好的社区支持,

  • 并行化的进程,以减少计算

  • 自动计算梯度


这五点也是用来挑选五大顶级深度学习框架的首选标准。


PyTorch


PyTorch是Torch深度学习框架的一个接口,可用于建立深度神经网络和执行张量计算。Torch是一个基于Lua的框架,而PyTorch则运行在Python上。


PyTorch是一个Python包,它提供张量计算。张量是多维数组,就像numpy的ndarray一样,它也可以在GPU上运行。PyTorch使用动态计算图,PyTorch的Autograd软件包从张量生成计算图,并自动计算梯度。


与特定功能的预定义的图表不同,PyTorch提供了一个框架,用于在运行时构建计算图形,甚至在运行时也可以对这些图形进行更改。当不知道创建神经网络需要多少内存的情况下,这个功能便很有价值。


PyTorch灵活性大,可以使用PyTorch处理各种深度学习的任务,包括但不局限于:


  • 影像(检测、分类等)

  • 文本(自然语言学习)

  • 增强学习


JAX


谷歌最新推出的JAX,官方定义为CPU、GPU和TPU上的NumPy。它具有出色的自动微分(differentiation)功能,是可用于高性能机器学习研究的python库。Numpy在科学计算领域十分普及,但是在深度学习领域,由于它不支持自动微分和GPU加速,所以更多的是使用Tensorflow或Pytorch这样的深度学习框架。


JAX使用 XLA 在诸如GPU和TPU的加速器上编译和运行NumPy。它与 NumPy API 非常相似, numpy 完成的事情几乎都可以用 jax.numpy 完成。


XLA是TensorFlow底层做JIT编译优化的工具,XLA可以对计算图做算子Fusion,将多个GPU Kernel合并成少量的GPU Kernel,用以减少调用次数,可以大量节省GPU Memory IO时间。Jax本身并没有重新做执行引擎层面的东西,而是直接复用TensorFlow中的XLA Backend进行静态编译,以此实现加速。


JAX在偏微分方程求解问题上的表现尤为突出,研究人员试了试分别在PyTorch和JAX两种框架上运行几种预训练模型,发现JAX的速度大约是PyTorch的6倍。JAX在以分子动力学为代表的科学计算领域的巨大潜力。


TensorFlow


TensorFlow由谷歌大脑团队的研究人员和工程师研发,它是深度学习领域中最常用的框架。


TensorFlow之所以流行的原因有两点:首先,它是完全开源的,并且有出色的社区支持。TensorFlow为大多数复杂的深度学习模型预先编写好了代码,比如递归神经网络和卷积神经网络,其次,它支持多种语言来创建深度学习模型,比如Python语言、C语言和R语言等,并且有不错的文档和指南支持。


TensorFlow有许多组件,其中最为突出的是:


  • Tensorboard:帮助使用数据流图进行有效的数据可视化;

  • TensorFlow:用于快速部署新算法/试验。


TensorFlow的架构灵活,能够在一个或多个CPU(以及GPU)上部署深度学习模型,典行的TensorFlow应用场景如下:


  • 基于文本的应用:语言检测、文本摘要

  • 图像识别:图像字幕、人脸识别、目标检测

  • 声音识别

  • 时间序列分析

  • 视频分析


Keras


Keras用Python编写,可以在TensorFlow(以及CNTK和Theano)之上运行。TensorFlow的接口是一个低级库,新用户可能会很难理解某些实现。


而Keras是一个高层的API,它为快速实验而开发。因此,如果希望获得快速结果,Keras会自动处理核心任务并生成输出。Keras支持卷积神经网络和递归神经网络,可以在CPU和GPU上无缝运行。


深度学习的初学者经常会抱怨:无法正确理解复杂的模型。如果你是这样的用户,Keras便是正确选择!它的目标是最小化用户操作,并使其模型真正容易理解。


Keras有多种架构,用于解决各种各样的问题,其中最为典型的应用是图像分类!


Caffe


CAFE是另一个面向图像处理领域的、比较流行的深度学习框架,它是由贾阳青(Yangqing Jia)在加利福尼亚伯克利大学读博士期间开发的,它也是开源的!


虽然Caffe对递归网络和语言建模的支持不如前面所述的几个框架。但是Caffe最突出的优点是:只需单个NVIDIA K40 GPU,它便可以每天处理超过六千万张图像,其中 1毫秒/图像用于推理,4毫秒/图像用于学习。


它为C、Python、MATLAB等接口以及传统的命令行提供了支持。


通过Caffe Mo‍del Zoo框架可访问用于解决深度学习问题的预训练网络、模型和权重。这些模型可完成下述任务:


1) 简单的递归

2) 大规模视觉分类

3) 用于图像相似性的SiameSE网络

4) 语音和机器人应用


Deeplearning4j


对于Java程序员来说,Deeplearning4j理想的深度学习框架!


Deeplearning4j用Java实现,与Python相比效率更高。它使用称为ND4J的张量库,提供了处理n维数组(也称为张量)的能力。该框架还支持CPU和GPU。


Deeplearning4j将加载数据和训练算法的任务作为单独的过程处理,这种功能分离提供了很大的灵活性。这成为了它的突出优点。


Deeplearning4j适用于图像、CSV 和纯文本等不同的数据类型。


可以使用Deeplearning4j构建的深度学习模型有:


1) 卷积神经网络(CNNs)

2) 递归神经网络(RNNs)

3) 长短时记忆(LSTM)等多种结构.


深度学习框架之间的对比


上面已经讨论了六种较为流行的深度学习框架,每一种都独具特性,那么数据科学家会从中如何做出选择?


当接到一个新的项目时,如何决定采用哪个框架?为此,需要了解每个框架的优点和局限性。如果选对了正确的框架,会起到事半功倍的效果。某些框架在处理图像数据时工作得非常好,但无法解析文本数据;某些框架在处理图像和文本数据时,性能很好,但是它们的内部工作原理很难理解。


在本节中,使用以下标准比较上述深度学习框架:


1) 社区支持力度

2) 使用的语言

3) 接口

4) 对预训练的模型的支持


所有这些框架都是开源的,支持CUDA,并有预训练的模型。但是,应该如何正确开始,应该选择哪个框架来构建(初始)深度学习模型?让我们来做详细的讨论!


先来说说TensortFlow。TensorFlow能处理图像以及基于序列的数据,如果你是深度学习的初学者,或者对线性代数和微积分等数学概念没有坚实的基础,那么TensortFlow的学习曲线将会十分陡峭。对于刚起步的人来说,TensorFlow可能过于复杂。建议需要不断练习,不断探索社区,并继续阅读文章以掌握TensorFlow的诀窍。一旦对这个框架有了一个很好的理解,实现一个深度学习模型对你来说将是易如反掌。


Keras是一个非常坚实的框架,可以开启深度学习之旅。如果你熟悉Python,并且没有进行一些高级研究或开发某种特殊的神经网络,那么Keras适合你。如果有一个与图像分类或序列模型相关的项目,可以从Keras开始,很快便可以构建出一个工作模型。Keras也集成在TensorFlow中,因此也可以使用tf.keras.构建模型。


在图像数据上构建深度学习模型时,Caffe是不错的选择。但是,当用到递归神经网络和语言模型时,Caffe落后于其他框架。Caffe的主要优点是,即使没有强大的机器学习或微积分知识,也可以构建出深度学习模型。


Caffe主要用于建立和部署移动电话和其他计算受限平台的深度学习模型。


正如前文所述,DeepleEarning4J是Java程序员的天堂,它为CNNS、RNN和LSTMS等不同的神经网络提供了大量的支持,在不牺牲速度的情况下它可以处理大量数据。



点「在看」的人都变好看了哦!
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151545
 
366 次点击