PyTorch vs TensorFlow:比较深度学习框架

2,639 阅读7分钟

PyTorch vs TensorFlow: comparing deep learning frameworks

PyTorch和Tensorflow是最受欢迎的深度学习库之一,它是机器学习的一个子领域。与人类大脑处理信息的方式类似,深度学习将算法结构成层,创建深度人工神经网络,它可以自行学习并做出决定。

本文邀请你仔细看看这些深度学习框架,了解它们的特点、关键区别以及如何在PyTorch和TensorFlow之间进行选择。

目录

什么是PyTorch?
什么是TensorFlow?
PyTorch vs TensorFlow
机制。图形定义
模型部署
可视化
调试
比较表
PyTorch与TensorFlow:如何选择?
结论

什么是PyTorch?

PyTorch 是Facebook AI 研究实验室开发的一个机器学习库。它于2016年首次推出,并作为免费的开源软件在BSD许可下发布。

正如我们之前在一篇文章中所解释的,Python有大量的数据科学包。PyTorch有一个Python接口,其功能是作为Python类构建的,因此是Python包生态系统的一部分。作为一个基于Python的库,它更容易与其他Python库(如SciPyNumPy)一起扩展其功能。然而,PyTorch用户也可以用C/C++编程,因为该库与深度学习框架Torch共享一些C++后端。

什么是TensorFlow?

TensorFlow是一个开源的机器学习库,由谷歌大脑团队创建。它的首次发布是在2015年,它是用Python、C++和CUDA编写的。

与PyTorch类似,TensorFlow也高度关注深度神经网络,并使用户能够创建和组合不同类型的深度学习模型,并在训练期间生成模型的性能图。尽管它是一个Python库,但在2017年,TensorFlow另外引入了RStudio的R接口。

PyTorch vs TensorFlow

PyTorch和Tensorflow都是关于神经网络应用的非常流行的框架。事实上,它们经常被项目经理和数据科学家认为是处理创新的深度学习应用开发甚至是研究时的首选库。

PyTorch vs TensorFlow: comparing deep learning frameworks

此外,PyTorch和Tensorflow仍然有(一些)独特的操作方式,尽管它们曾经有更多的不同之处随着时间的推移,他们已经变得非常有竞争力,目前几乎所有的好功能都包含在这两个框架中。

机制。图的定义

图是用来描述计算的。图是一种数据结构,由节点和边组成。在深度神经网络的训练过程中,计算图存储了神经网络在前向传递过程中的激活情况。然后,一个反向传播步骤使用计算图来计算网络的每个权重的更新,从而训练网络。

要了解它们的区别,首先让我们了解PyTorch和TensorFlow在图的定义方面有什么共同点。首先,它们都把任何模型看作是一个DAG(有向无环图),并对其进行操作。 张量.张量将对象集之间的关系描述为一个矢量空间。尽管如此,它们有非常不同的图定义。

TensorFlow允许用户通过创建一个有状态的数据流图来执行对张量的操作。在模型运行之前,计算图被静态地定义。

相反,PyTorch更加动态,使用户能够在模型运行时执行节点。换句话说,计算图是在每一个执行点上创建的,并且在运行期间可以对计算图进行修改。

由于这个原因,PyTorch在研究中经常被优先考虑,因为它更适合于创建自定义模型,而且动态的特性可能使它更容易与模型的内部互动。

然而,在2019年。 TensorFlow 2.0还引入了动态图,允许在运行时评估操作,而不需要生成一个图来以后运行。因此,考虑到用户可以在这两个框架上进行动态或静态操作,曾经是这两个库之间的主要区别之一,现在已经不那么重要了。

模型部署

在2020年,PyTorch推出了TorchServe,这是一个模型部署工具。这个工具提供了基本的功能集,如度量、API端点规范、模型存档工具等。

反过来,TensorFlow有TensorFlow Serving,这是一个内置的模型部署工具,用于部署机器学习模型以及gRPC服务器。另外,它还可以实现对gRPC服务器的远程访问。总的来说,TensorFlow Serving允许用户部署新的算法,同时保留相同的服务器架构和API。这个工具已经在许多谷歌项目上进行了测试,它是为生产环境设计的。

视觉化

PyTorch和TensorFlow支持可视化工具,这有利于调试,允许用户快速可视化结果,并对模型的训练过程有一个广阔的视野。

一方面,PyTorch不一定有专门的可视化工具,但它确实有Visdom,一个极简的可视化工具。Visdom可以与Numpy或PyTorch一起使用。它提供了有限的基本功能,但它也相当容易使用、灵活,并支持PyTorch的张量。

另一方面,TensorFlow有Tensorboard,它提供了一套应用程序,允许用户通过五种不同的可视化方式来理解深度学习模型:(1)图形;(2)音频;(3)图像;(4)分布和柱状图;(5)标量。

总而言之,Tensorboard被认为是比Visdom更通用的可视化工具,这就是为什么PyTorch 1.2.0版本也能集成Tensorboard的原因。

调试

Python的调试可以用Python的标准调试器(如PyCharm调试器和pdb)进行。事实上,由于PyTorch在运行时动态地定义了图形,所以大多数Python工具都可以很容易地被集成。

调试TensorFlow模型代码比PyTorch更复杂。在这种情况下,用户必须学习库的调试器--tfdbg--以及会话中的请求变量。

比较表

框架PyTorchTensorFlow

起源

PyTorch是Facebook人工智能研究实验室开发的一个机器学习库。

TensorFlow是由谷歌大脑团队创建的一个开源机器学习库。

机制。图形定义

动态图-- 使用户能够在模型运行时执行节点。

有状态的数据流图--然而,在2019年,TensorFlow 2.0也引入了动态图。

模型部署

2020年,PyTorch引入了TorchServe。

TensorFlow有TensorFlow Serving,这是一个内置的模型部署工具,用于部署机器学习模型以及gRPC服务器。

视觉化

Visdom - PyTorch 1.2.0版本也可以集成Tensorboard。

Tensorboard--提供了一套应用程序,允许用户通过五种不同的可视化方式来理解深度学习模型。

调试

Python的标准调试器--例如,PyCharm调试器和pdb。

tfdbg--用户必须学习该库的调试器。

PyTorch vs TensorFlow:如何选择?

PyTorch和TensorFlow都是令人难以置信的工具;否则,它们就不会如此受欢迎。事实上,多年来它们已经做了很多改进,因此在两者之间做出选择从未像现在这样具有挑战性。

当谈到在PyTorch和TensorFlow之间做出决定时,首先关键是要对神经网络如何帮助建立更好的深度学习模型的具体目的有一个广泛的了解。这些工具将遵循这些知识,而不是相反。

在这两个工具中,一个有用的、非常简单的选择方法是,如果用户习惯于使用Python作为编程语言,那么PyTorch是一个不错的选择,因为它对Python非常友好。

PyTorch在面向研究的开发者中获得了很大的知名度,支持动态培训。它也是一个很好的选择,可以获得更直接的调试体验。

TensorFlow为高层模型开发提供了各种选择,通常被认为是比PyTorch更成熟的库。此外,这个框架还提供对移动平台的支持。

在社区方面,这两个框架都组织得很好,提供了全面的文档,有许多资源和免费教程。

总结

PyTorch和TensorFlow在深度神经网络方面都是以追求卓越为目标。这两个框架都在不断改进和复制对方的顶级功能--这使得选择哪一个更好变得非常具有挑战性。

虽然TensorFlow被认为是一个更成熟的库;但PyTorch也被证明是令人难以置信的强大。通常,Python爱好者更喜欢PyTorch,但它主要是在研究领域获得普及,而TensorFlow则更多地与构建人工智能产品有关。