PyTorch和TensorFlow是当今最流行的两个深度学习框架。关于哪个框架更优秀的争论由来已久,每个阵营都有其狂热的支持者。
PyTorch和TensorFlow在其相对较短的生命周期内发展迅速,以至于辩论的格局不断变化。过时或不完整的信息比比皆是,这进一步混淆了关于哪个框架在特定领域占优势的复杂讨论。
虽然TensorFlow被认为是一个以工业为中心的框架,而PyTorch被认为是一个以研究为中心的框架,但我们将看到这些观念部分源于过时的信息。进入2022年,关于哪个框架更完美将有更多的争议--现在让我们来探讨这些差异。
实用性考虑
PyTorch和TensorFlow都有独特的开发故事和复杂的设计决策历史。以前,这使得两者的比较成为关于其当前功能和推测的未来功能的复杂技术讨论。考虑到这两个框架自成立以来已经非常成熟,这些技术上的差异在目前来说是微不足道的。
幸运的是,对于那些不想让自己的眼睛发亮的人来说,PyTorch与TensorFlow的辩论目前归结为三个实用性考虑方面。
模型的可用性。随着深度学习领域逐年扩大,模型也越来越大,从头开始训练最先进的模型(SOTA)已经不可行了。幸运的是,有许多SOTA模型是公开可用的,在可能的情况下利用它们是很重要的。
部署基础设施。如果不能投入使用,训练好的模型是没有意义的。降低部署时间是最重要的,尤其是在微服务商业模式日益流行的情况下;高效的部署有可能使许多以机器学习为中心的企业成功或失败。
生态系统。深度学习不再局限于高度控制环境下的特定用例。人工智能正在为许多行业注入新的力量,因此,在一个更大的生态系统中建立一个框架,以促进移动、本地和服务器应用的发展是很重要的。此外,专门的机器学习硬件的出现,如谷歌的Edge TPU,意味着成功的从业者需要与一个能与这种硬件良好整合的框架合作。
我们将依次探讨这三个实用性考虑因素,接着提供我们在不同领域使用哪种框架的建议。
PyTorch vs TensorFlow - 模型的可用性
从头开始实施一个成功的深度学习模型可能是一项非常棘手的任务,特别是对于像NLP这样的应用,工程和优化都很困难。SOTA模型越来越复杂,对于小规模的企业来说,训练和调整根本不切实际,甚至是不可能的任务。OpenAI的GPT-3有超过1750亿个参数,而GPT-4将有超过100万亿个参数。初创企业和研究人员根本没有计算资源来利用和探索这样的模型,所以获得预训练的模型来进行迁移学习、微调或开箱即用的推理是非常宝贵的。
在模型的可用性方面,PyTorch和TensorFlow有很大的分歧。PyTorch和TensorFlow都有自己的官方模型库,我们将在下面的生态系统部分进行探讨,但从业者可能希望利用其他来源的模型。让我们对每个框架的模型可用性进行定量分析。
HuggingFace
HuggingFace 使得只需几行代码就可以将经过训练和调整的 SOTA 模型纳入你的管道。
当我们比较PyTorch与TensorFlow的HuggingFace模型可用性时,结果是惊人的。下面我们看到HuggingFace上可用的模型总数的图表,这些模型要么是PyTorch或TensorFlow专用的,要么是对两个框架都可用的。我们可以看到,专门用于PyTorch的模型数量绝对超过了竞争对手。几乎85%的模型是PyTorch专用的,即使是那些不专用的模型,也有50%的机会可以在PyTorch中使用。相比之下,只有约16%的模型可用于TensorFlow,其中只有约8%是TensorFlow专用的。
如果我们把视野缩小到HuggingFace上最受欢迎的30个模型,我们会看到类似的结果。在前30个模型中,甚至没有三分之二的模型是TensorFlow的,而所有的模型都是PyTorch的。前30个模型中,没有一个是TensorFlow独有的。
研究论文
特别是对于研究人员来说,能够访问最近发表的论文中的模型是至关重要的。试图在不同的框架中重新创建你想探索的新模型会浪费宝贵的时间,所以能够克隆一个资源库并立即开始实验意味着你可以专注于重要的工作。
鉴于PyTorch是事实上的研究框架,我们预计我们在HuggingFace上观察到的趋势将延续到整个研究界;我们的直觉是正确的。
我们将过去几年中八家顶级研究期刊的数据汇总到下图中,显示了使用PyTorch或TensorFlow的出版物的相对比例。正如你所看到的,PyTorch的应用比例增长非常迅速,在短短几年内,使用PyTorch或TensorFlow的论文从只有7%左右增长到近80%。
这种快速增长的使用率主要原因是由于TensorFlow 1的研究背景困难性加剧,导致研究人员将目光投向较新的替代品PyTorch。虽然TensorFlow的许多问题在2019年发布的TensorFlow 2中得到了解决,但PyTorch的势头足以让它保持自己作为既定的以研究为中心的框架,至少从群体的角度来看。
如果我们看一下迁移框架的研究人员的比例,我们可以看到同样的模式。当我们看一下2018年和2019年使用PyTorch或TensorFlow的作者的出版物时,我们发现2018年使用TensorFlow的大多数作者在2019年迁移到PyTorch(55%),而2018年使用PyTorch的绝大多数作者留在了PyTorch, 在2019年比例达到(85%)。这一数据在下面的Sankey图中得到了可视化,左边对应的是2018年,右边对应的是2019年。请注意,这些数据代表了2018年每个框架的用户比例,而不是总人数。
细心的读者会注意到,这些数据是在TensorFlow 2发布之前的,但正如我们在下一节所看到的,这一事实在研究界是不重要的。
论文代码
最后,我们看一下Papers with Code的数据--这个网站的使命是创建一个免费和开放的机器学习论文、代码、数据集等资源。我们绘制了利用PyTorch、TensorFlow或其他框架的论文的百分比,数据按季度汇总,从2017年底到本季度。我们看到利用PyTorch的论文在稳步增长--在本季度创建的4500个资源库中,60%是用PyTorch实现的,只有11%用TensorFlow实现。
相反,我们看到TensorFlow的使用在稳步下降。即使在2019年发布了TensorFlow 2,解决了许多使使用TensorFlow 1进行研究的痛苦的问题,也不足以扭转这一趋势。我们看到,即使在TensorFlow 2发布后,TensorFlow的受欢迎程度也在近乎单调地下降。
模型可用性--最后的话
从以上数据可以看出,PyTorch目前在研究领域占主导地位。虽然TensorFlow 2使利用TensorFlow进行研究变得更加容易,但PyTorch已经让研究人员没有理由再去尝试TensorFlow了。此外,TensorFlow 1中的旧研究和TensorFlow 2中的新研究之间的向后兼容性问题只会使这个问题更加严重。
就目前而言,PyTorch是研究领域的明显赢家,原因很简单,它已经被社区广泛采用,大多数出版物/可用模型都使用PyTorch。
有几个值得注意的特殊情况/说明:
·谷歌人工智能:很明显,谷歌发表的研究主要使用TensorFlow。鉴于谷歌比Facebook多产得多(2020年在NeurIPS或ICML上发表了292篇对92篇),一些研究人员可能会发现使用或至少精通TensorFlow是有用的。谷歌大脑也使用JAX与Flax--谷歌用于JAX的神经网络库。
·DeepMind:DeepMind在2016年规范了TensorFlow的使用,尽管他们在2020年宣布使用JAX来加速他们的研究。在这份公告中,他们还概述了他们的JAX生态系统,最值得一提的是Haiku,他们基于JAX的神经网络库。
DeepMind也比Facebook更多产(2020年在NeurIPS或ICML上发表了110篇对92篇)。DeepMind创建了Sonnet,这是TensorFlow的高级API,专门针对研究,有时被称为 "研究版的Keras",这可能对那些考虑使用TensorFlow进行研究的人有用。此外,Deepmind的Acme框架对强化学习从业者来说可能是必不可少的。
·OpenAI:另一方面,OpenAI在2020年对PyTorch的使用进行了内部标准化;但是,对于那些强化学习的人来说,他们较早的baselines资源库是用TensorFlow实现的。Baselines提供了高质量的强化学习算法的实现,所以TensorFlow可能是强化学习从业者的最佳选择。
·JAX:谷歌有另一个叫做JAX的框架,在研究界越来越受欢迎。从某种意义上说,与PyTorch或TensorFlow相比,JAX的开销要小得多;但它的基本理念与PyTorch和TensorFlow都不同,因此对大多数人来说,迁移到JAX可能不是一个好选择。现在有越来越多的模型/论文使用JAX,但目前还不清楚它在未来几年内相对于PyTorch和TensorFlow在研究界的普及程度。
如果TensorFlow想重新成为主导性的研究框架,它将面临漫长而艰巨的旅程,甚至不可能。
综上,PyTorch与TensorFlow之间相比较的的第一回合PyTorch获胜。
PyTorch vs TensorFlow - 有效运用
虽然从推理的角度来看,采用SOTA模型获得最先进的结果是深度学习应用,但这种想法可能会缺乏实用性,甚至在行业环境中也不可能实现。如果有一个费力的、容易出错的过程来使他们的情报可操作,那么对SOTA模型的访问就毫无意义。因此,除了考虑哪个框架能让你获得优质的模型外,重要的是考虑每个框架的端到端深度学习过程。
TensorFlow自成立以来一直是面向有效运用的应用程序的首选框架,这是有原因的。TensorFlow有一连串的相关工具,使端到端的深度学习过程变得简单而高效。具体到部署方面,TensorFlow Serving和TensorFlow Lite可以让你在云、服务器、移动和物联网设备上无痛部署。
从有效运用的角度来看,PyTorch曾经非常乏力,但近年来它一直在努力缩小这一差距。去年推出的TorchServe和几周前推出的PyTorch Live提供了急需的原生部署工具,但PyTorch是否缩小了部署差距,使其在行业环境中值得使用?让我们来看看。
TensorFlow
TensorFlow提供了可扩展的生产,其静态图已被优化为推理性能。当用TensorFlow部署一个模型时,你会根据应用情况使用TensorFlow Serving或TensorFlow Lite。
ensorFlow服务
TensorFlow服务用于在服务器上部署TensorFlow模型,无论是内部还是云端,并在TensorFlow Extended(TFX)端到端机器学习平台中使用。服务化使得模型很容易被序列化到带有模型标签的定义明确的目录中,并选择哪个模型用于推理请求,同时保持服务器架构和API的静态。
Serving允许你轻松地在专门的gRPC服务器上调动模型,这些服务器运行谷歌的开源框架,用于高性能RPC。gRPC的设计意图是连接不同的微服务生态系统,因此这些服务器很适合模型部署。服务作为一个整体通过顶点AI与谷歌云紧密结合,并与Kubernetes和Docker集成。
TensorFlow Lite:
TensorFlow Lite(TFLite)用于在移动或IoT/嵌入式设备上部署TensorFlow模型。TFLite为这些设备压缩和优化了模型,并更广泛地解决了设备上人工智能的5个限制--延迟、连接、隐私、尺寸和耗电。同样的管道被用来同时输出基于Keras的标准SavedModels(与Serving一起使用)和TFLite模型,因此模型质量可以被比较。
TFLite既可用于Android和iOS,也可用于微控制器(带有Bazel或CMake的ARM)和嵌入式Linux(例如Coral设备)。TensorFlow的Python、Java、C++、JavaScript和Swift(截至今年已归档)的API,为开发者提供了广泛的语言选择。
PyTorch
PyTorch在使部署变得更容易方面进行了投资,以前在这个领域是出了名的乏善可陈。以前,PyTorch用户需要使用Flask或Django在模型上建立一个REST API,但现在他们有了TorchServe和PyTorch Live这样的选择。
TorchServe
TorchServe是一个开源的部署框架,由AWS和Facebook(现在的Meta)合作产生,于2020年发布。它有基本的功能,如端点规范、模型归档和观察指标;但它仍然不如TensorFlow的替代品。TorchServe同时支持REST和gRPC APIs。
PyTorch Live
PyTorch在2019年首次发布了PyTorch Mobile,旨在为Android、iOS和Linux的优化机器学习模型的部署创建一个端到端的工作流程。
PyTorch Live于12月初发布,在Mobile的基础上发展。它使用JavaScript和React Native来创建具有相关UI的跨平台iOS和Android人工智能驱动的应用程序。设备上的推理仍由PyTorch Mobile执行。Live带有可供借鉴的示例项目,并计划在未来支持音频和视频输入。
有效运用--最后的话
目前,TensorFlow在部署方面仍然获胜。Serving和TFLite简直比PyTorch的竞争对手更强大,而且将TFLite与谷歌的Coral设备结合起来用于本地AI的能力是许多行业的必备条件。相比之下,PyTorch Live只专注于移动领域,而TorchServe仍处于起步阶段。观察未来几年调动领域的变化将是有趣的,但现在PyTorch与TensorFlow的比较,第二回合TensorFlow胜出。
关于模型可用性和部署问题的最后说明。对于那些想使用TensorFlow部署基础设施,但又想访问只有PyTorch中才有的模型的人,可以考虑使用ONNX将模型从PyTorch移植到TensorFlow中。
PyTorch vs TensorFlow - 生态系统
在2022年将PyTorch和TensorFlow分开的最后一个重要考虑因素是它们所处的生态系统。从建模的角度来看,PyTorch和TensorFlow都是有能力的框架,在这一点上,它们的技术差异不如围绕它们的生态系统重要,后者提供了易于部署、管理、分布式培训等工具。现在让我们来看看每个框架的生态系统。
PyTorch
除了像HuggingFace这样的平台,还有官方的PyTorch Hub--一个面向研究的平台,用于分享带有预训练模型的资源库。Hub拥有广泛的模型,包括用于音频、视觉和NLP的模型。它也有生成模型,包括用于生成高质量名人脸部图像的GAN。
SpeechBrain
SpeechBrain是PyTorch的官方开源语音工具包。SpeechBrain支持ASR、说话人识别、验证和日记等功能 如果你不想建立任何模型,而是想要一个具有自动章节、情绪分析、实体检测等功能的即插即用工具,请查看AssemblyAI自己的语音到文本API。
生态系统工具
查看PyTorch的工具页面,了解其他可能有用的库,例如那些专门针对计算机视觉或自然语言处理的库。这包括fast.ai--一个使用现代最佳实践制作神经网络的流行库。
TorchElastic
TorchElastic于2020年发布,是AWS和Facebook之间合作的结果。它是一个分布式训练的工具,它管理工人进程并协调重启行为,这样你就可以在一个计算节点集群上训练模型,这些节点可以动态变化而不影响训练。因此,TorchElastic可以防止服务器维护事件或网络问题等问题造成的灾难性故障,这样你就不会丢失训练进度。TorchElastic的特点是与Kubernetes集成,并已被纳入PyTorch 1.9+。
TorchX
TorchX是一个用于快速构建和部署机器学习应用程序的SDK。TorchX包括训练会话管理器API,用于将分布式PyTorch应用程序启动到支持的调度器上。它负责启动分布式作业,同时原生支持由TorchElastic本地管理的作业。
PyTorch Lightning
PyTorch Lightning有时被称为PyTorch的Keras。虽然这种比较略有误导,但Lightning是简化PyTorch中模型工程和训练过程的有用工具,而且自2019年首次发布以来,它已经非常成熟。Lightning以面向对象的方式处理建模过程,定义了可重复使用和可共享的组件,可以跨项目利用。关于Lightning的更多信息以及其工作流程与vanilla PyTorch的比较,你可以查看这个教程。
TensorFlow
Hub
TensorFlow Hub是一个训练有素的机器学习模型库,可以随时进行微调,让你只需几行代码就可以使用像BERT这样的模型。Hub包含TensorFlow、TensorFlow Lite和TensorFlow.js模型,适用于不同的使用情况,模型可用于图像、视频、音频和文本问题领域。从这里的教程开始,或在这里看到模型的列表。
模型园地
如果现成的预训练模型不适合你的应用,那么TensorFlow的模型园是一个提供SOTA模型源代码的资源库。如果你想了解模型是如何工作的,或者为你自己的需要修改它们,它是非常有用的--这是在转移学习和微调之外,序列化的预训练模型所不能做到的。
模型园包含由谷歌维护的官方模型、由研究人员维护的研究模型和由社区维护的社区模型的目录。TensorFlow的长期目标是在Hub上提供模型园的预训练版本,并且Hub上的预训练模型可以在模型园中获得源代码。
扩展(TFX)
TensorFlow Extended是TensorFlow的端到端平台,用于模型部署。你可以加载,验证,分析和转换数据;训练和评估模型;使用Serving或Lite部署模型;然后跟踪工件及其依赖性。TFX可与Jupyter或Colab一起使用,并可使用Apache Airflow/Beam或Kubernetes进行协调。TFX与谷歌云紧密结合,可与顶点AI管道一起使用。
顶点人工智能
顶点人工智能是谷歌云的统一的机器学习平台。它于今年发布,旨在将GCP、AI平台和AutoML上的服务统一到一个平台上。顶点人工智能可以帮助你通过以无服务器的方式协调工作流程来自动化、监测和管理机器学习系统。顶点人工智能还可以存储工作流程的工件,让你跟踪依赖关系和模型的训练数据、超参数和源代码。
MediaPipe
MediaPipe是一个构建多模式、跨平台应用机器学习管道的框架,可用于人脸检测、多手跟踪、物体检测等。该项目是开源的,有几种语言的绑定,包括Python、C++和JavaScript。关于开始使用MediaPipe及其即用型解决方案的更多信息,可以在这里找到。
Coral
虽然有各种依赖基于云的人工智能的SaaS公司,但许多行业对本地人工智能的需求越来越大。谷歌Coral就是为了满足这一需求而创建的,它是一个完整的工具包,用于构建具有本地AI的产品。Coral于2020年发布,解决了部署部分的TFLite部分中提到的实施机载人工智能的困难,包括隐私和效率。
Coral提供了一系列用于原型设计、生产和传感的硬件产品,其中一些基本上是专门为人工智能应用创建的更强大的树莓派。他们的产品利用其边缘TPU在低功耗设备上进行高性能推理。Coral还为图像分割、姿势估计、语音识别等提供预编译的模型,为希望创建自己的本地人工智能系统的开发者提供支架。创建一个模型的基本步骤可以在下面的流程图中看到。
TensorFlow.js
TensorFlow.js是一个用于机器学习的JavaScript库,允许你在浏览器和服务器端用Node.js训练和部署模型。他们提供了关于如何导入Python模型的例子和信息的文档,预先训练好的模型可以开箱即用,以及带有相关代码的实时演示。
云计算
TensorFlow云是一个库,允许你将你的本地环境连接到谷歌云。所提供的API旨在弥合从本地机器上的模型构建和调试到谷歌云上的分布式训练和超参数调整的差距,而不需要使用云控制台。
Colab
谷歌Colab是一个基于云的笔记本环境,与Jupyter非常相似。将Colab连接到谷歌云上进行GPU或TPU训练很容易。请注意,PyTorch也可以与Colab一起使用。
游乐场
Playground是一个小而精的教育工具,用于理解神经网络的基础知识。它提供了一个简单的密集网络,并在一个干净的用户界面内进行可视化。你可以改变网络中的层数和它们的大小,以实时看到特征是如何被学习的。你还可以看到改变超参数,如学习率和正则化强度如何影响不同数据集的学习过程。Playground允许你实时播放学习过程,以高度可视化的方式看到输入在训练过程中是如何转变的。Playground甚至带有一个开源的小型神经网络库,它是在此基础上建立的,所以你可以了解网络的核心和基本原理。
数据集
谷歌研究院的数据集是一个数据集资源,谷歌定期在上面发布数据集。谷歌还有一个数据集搜索,可以访问更广泛的数据集数据库。PyTorch用户当然也可以利用这些数据集。
生态系统--最后的话
这一轮是三者中最接近的,但最终TensorFlow拥有优越的生态系统。谷歌在确保端到端深度学习工作流程的每个相关领域都有可用的产品方面进行了大量投资,尽管这些产品的完善程度在这个领域中有所不同。即使如此,与谷歌云的紧密结合以及TFX使得端到端的开发过程变得高效而有条理,而将模型移植到谷歌珊瑚设备上的便利性也使TensorFlow在某些行业中获得了压倒性的胜利。
在PyTorch与TensorFlow的比较中,第三回合TensorFlow获胜。
我应该使用PyTorch还是TensorFlow?
正如你可能期望的那样,PyTorch与TensorFlow的争论并没有一个单一的正确答案--说一个框架在特定的使用情况下优于另一个框架才是明智的。为了帮助你决定哪个框架最适合你,我们将我们的建议汇编成以下流程图,每个图表都是针对不同的兴趣领域。
如果你在一个企业环境中执行深度学习工程,你很可能正在使用TensorFlow,并且可能应该坚持使用它。TensorFlow强大的部署框架和端到端的TensorFlow扩展平台对于那些需要生产模型的人来说是非常宝贵的。在gRPC服务器上的轻松部署以及模型监控和工件跟踪是行业使用的关键工具。随着最近TorchServe的发布,如果你有充分的理由,比如需要访问只有PyTorch中才有的SOTA模型,你可以考虑使用PyTorch。在这种情况下,考虑使用ONNX在TensorFlow的部署工作流程中部署转换后的PyTorch模型。
如果你正在构建移动应用程序,鉴于最近发布的PyTorch Live,你可以考虑使用PyTorch,除非你需要音频或视频输入,在这种情况下你应该使用TensorFlow。如果你正在构建利用人工智能的嵌入式系统或物联网设备,鉴于TFLite + Coral管道,你仍然应该使用TensorFlow。
结论:如果你必须选择一个框架,请选择TensorFlow。
如果你是一个研究人员,你大概率在使用PyTorch,并且现在你应该坚持使用它。PyTorch是事实上的研究框架,所以大多数SOTA模型都在PyTorch中/为PyTorch服务。
这条规则有几个值得注意的例外,最值得注意的是,那些从事强化学习的人应该考虑使用TensorFlow。TensorFlow有一个用于强化学习的原生Agent库,Deepmind的Acme框架是用TensorFlow实现的。OpenAI的Baselines模型库也是用TensorFlow实现的,尽管OpenAI的Gym可以用TensorFlow或PyTorch来使用。如果你打算使用TensorFlow进行研究,你也应该看看Deepmind的Sonnet,以获得更高层次的抽象信息。
如果你不想使用TensorFlow,如果你要做TPU训练,你应该考虑探索谷歌的JAX。它本身不是一个神经网络框架,而是更接近于NumPy对G/TPU的实现,具有自动分化功能。Deepmind的Haiku,他们称之为 "Sonnet for JAX",是一个建立在JAX之上的神经网络库,如果你正在考虑JAX的话,值得探索。另外,你也可以看看谷歌的Flax。如果你不做TPU训练,目前最好坚持使用PyTorch。
无论你选择哪种框架,你都应该在2022年关注JAX,特别是随着其社区的发展和更多出版物开始利用它。
结论:如果你需要选择一个框架,请选择PyTorch
如果你是一个教授,在深度学习课程中使用哪个框架取决于课程的目标。如果你的课程的重点是培养行业就绪的深度学习工程师,他们可以在整个端到端深度学习过程中具备能力,而不仅仅是深度学习理论,那么你应该使用TensorFlow。在这种情况下,接触TensorFlow生态系统及其工具,以及端到端的实践项目将是非常有指导意义和价值的。
如果你的课程的重点是深度学习理论和理解深度学习模型的内部结构,那么你应该使用PyTorch。如果你教授的是高水平的本科生课程或早期的研究生课程,打算培养学生进行深度学习研究,那就更是如此了。
理想情况下,学生应该接触到每个框架,尽管一个学期的时间有限,但拿出一些时间来了解框架之间的差异可能是有价值的。如果这门课程是一个更大的机器学习项目的一部分,有许多课程致力于不同的主题,那么坚持使用最适合课程材料的框架,而不是试图让学生接触这两个框架,可能会更好。
如果你想改变职业,PyTorch或TensorFlow是一个不错的选择。在这种情况下,你能做的最重要的事情是证明你能带来门外的价值,所以拥有一个项目组合是至关重要的。通过将深度学习应用于创造性的用例来超越常规,或者通过将一个项目从头到尾地完成来证明你已经做好了行业准备,这将使你处于非常有利的地位。
因此,使用哪个框架你就能更容易地工作。使用对你来说更直观的框架将使你能够有效地建立你的投资组合,这比熟悉某个特定框架的API要重要得多。话虽如此,如果你对框架完全不了解,请使用TensorFlow,因为它是行业的首选框架。我们在下图中汇编了各个职业网站为每个框架发布的招聘信息的数量,TensorFlow在很大程度上击败了PyTorch。
结论:如果你有特定的理由使用PyTorch,比如有为OpenAI工作的目标,或者TensorFlow对你来说是无望的不直观的,那么请自由使用它;但我们的建议是专注于TensorFlow。
如果你是一个对深度学习感兴趣的爱好者,你使用哪个框架将取决于你的目标。如果你要实现一个深度学习模型作为一些大项目的一部分,那么TensorFlow可能是你想要使用的,特别是如果你要部署到物联网/嵌入式设备。虽然鉴于PyTorch Live的发布,你可以在移动应用中使用PyTorch,但TensorFlow + TFLite仍然是目前的首选方法。
如果你的目标是为了学习深度学习,那么在这种情况下,哪个框架最好取决于你的背景。一般来说,PyTorch可能是这里更好的选择,特别是如果你已经习惯于用Python工作。如果你是一个完全的初学者,刚刚开始学习深度学习,请看下一节。
如果你是一个完全的初学者,对深度学习感兴趣,只是想开始学习,我们建议使用Keras。使用它的高级组件,你可以轻松地开始了解深度学习的基础知识。一旦你准备开始更彻底地理解深度学习的核心内容,你有几个选择。
如果你不想安装一个新的框架,并且担心你的能力能不能转换到一个新的API上,那么你可以尝试从Keras "降 "到TensorFlow。根据你的背景,TensorFlow可能会让你感到困惑,在这种情况下,可以尝试转移到PyTorch。
如果你想要一个更像Python的框架,那么转移到PyTorch可能是你最好的做法。在这种情况下,请注意你将不得不安装一个新的框架,并有可能重写自定义脚本。此外,如果PyTorch对你来说有点麻烦,你可以通过使用PyTorch Lightning将你的代码分割开来,并摆脱一些模板。
如果你是一个完全的初学者,可以考虑在YouTube上观看一些TensorFlow和PyTorch的教程,以决定哪个框架对你来说更直观。
最后的话
正如你所看到的,PyTorch与TensorFlow的争论是一个细微的问题,其景观不断变化,过时的信息使得理解这一景观更加困难。在2022年,PyTorch和TensorFlow都是非常成熟的框架,它们的核心深度学习功能有很大重叠。今天,每个框架的实际考虑,如它们的模型可用性、部署时间和相关的生态系统,取代了它们的技术差异。
你选择这两个框架都不会犯错,因为它们都有良好的文档、许多学习资源和活跃的社区。 虽然PyTorch在被研究界爆炸性地采用后已经成为事实上的研究框架,而TensorFlow仍然是传统的工业框架,但在这两个领域肯定有各自的用例。
希望我们的建议能帮助你在复杂的PyTorch与TensorFlow之间游刃有余! 如需更多有用的信息,请查看我们博客上的其他内容。
评论
沙发等你来抢