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

2024-01-31 05:50

本文主要是介绍原创 | 让你捷足先登的深度学习框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

98efdfbc929e6d28f0d17762c4e703a9.png

作者:陈之炎

本文约3500,建议阅读5分钟

本文介绍了几种非常有用的深度学习框架、它们的优点以及应用,通过对每个框架进行比较,研发人员了解如何有选择地使用它们,高效快捷完成项目任务。

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

1. 深度学习框架概述

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

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

  • 优化的性能

  • 易于理解和编码

  • 良好的社区支持,

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

  • 自动计算梯度

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

2. PyTorch

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

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

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

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

  • 影像(检测、分类等)

  • 文本(自然语言学习)

  • 增强学习

3. 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在以分子动力学为代表的科学计算领域的巨大潜力。

4. TensorFlow

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

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

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

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

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

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

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

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

  • 声音识别

  • 时间序列分析

  • 视频分析

5. Keras

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

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

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

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

6. Caffe

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

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

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

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

1) 简单的递归

2) 大规模视觉分类

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

4) 语音和机器人应用

7. Deeplearning4j

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

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

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

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

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

1) 卷积神经网络(CNNs)

2) 递归神经网络(RNNs)

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

8. 深度学习框架之间的对比

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

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

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

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等不同的神经网络提供了大量的支持,在不牺牲速度的情况下它可以处理大量数据。

编辑:王菁

数据派研究部介绍

数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:

算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。

点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。

81c0ef749373d4c7bf972b2b470e364c.png点击“阅读原文”加入组织~

这篇关于原创 | 让你捷足先登的深度学习框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662749

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个