pytorch和tensorflow兼容吗tensorflow与pytorch的区别pytorch和tensorflow的区别 知乎




pytorch和tensorflow兼容吗tensorflow与pytorch的区别pytorch和tensorflow的区别 知乎

2022-07-21 2:24:28 网络知识 官方管理员


PyTorch(1.8)和Tensorflow(2.5)最新版本比较。

自深度学习重新获得公认以来,许多机器学习框架层出不穷,争相成为研究人员以及行业从业人员的新宠。从早期的学术成果Caffe、Theano,到获得庞大工业支持的PyTorch、TensorFlow,许多研究者面对大量的学习框架不知该如何选择?

pytorch和tensorflow兼容吗(tensorflow与pytorch的区别)(1)

机器学习框架。

Tensorflow/Keras和PyTorch是迄今为止最受欢迎的两个主要机器学习库。TensorFlow由谷歌团队开发,于2015年发布。而PyTorch则由Facebook的团队开发,并于2017年在GitHub上开源。

为了充分发挥不同机器学习框架的优势,许多机器学习从业者对不同框架进行了比较,通过对比优缺点,以选择最适合自己的框架。

在本文中,我们将从以下两个方面对机器学习库(PyTorch1.8和Tensorflow2.5)进行比较:

  • 最新发行版本中的新增功能;
  • 使用哪个以及为什么。

Tensorflow2.xVSPytorch1.8

Tensorflow2.x

TensorFlow1和TensorFlow2.x之间有很多变化。第一个是Tensorflow.js.的发布。随着Web应用程序越来越占主导地位,在浏览器上部署模型的需求大大增加。借助Tensorflow.js,你可以使用Node在浏览器中运行现有的python模型、重新训练现有的模型,并使用Javascript完全构建和训练模型(不需要python)。

Tensorflow2.x中的另一个版本是TensorflowLite,一个轻量级库,用于在移动和嵌入式设备上部署模型。这是因为移动和Web应用程序是两种最主要的应用程序类型。使用TensorflowLite,你可以简单地将现有模型转换为「compressedflatbuffer」,然后将buffer加载到移动设备或任何其他嵌入式设备中。这期间发生的主要优化过程是将32位浮点值转换成8位,这更适合于嵌入式设备(更少的内存使用)。

此外还包括TensorflowExtended(TFX)的发布,它是用于部署生产MLpipeline的端到端平台。其在机器学习的3个最重要领域(web应用程序、移动应用程序和生产管理)方面做得很好。机器学习生产pipeline仍需要大量研究和开发。TFX可以应对经典的软件生产挑战,例如可扩展性、可维护性和模块化。此外,它还可以帮助解决机器学习的特定挑战,例如持续在线学习、数据验证,数据管理等。

PyTorch1.8

与TensorflowLite相似,PyTorch改进了其现有的PytorchMobile。该框架可以量化、跟踪、优化和保存适用于Android和iOS的模型。此外还发布了PytorchLiteInterpreter的原型,该原型可减小移动设备上二进制运行时的大小。此外,还通过更具体的错误处理和pipeline并行为分布式训练提供了更多支持。PytorchProfiler用于分析APP、模型的执行时间、执行流程、内存消耗等。

尽管Pytorchlightning不是PyTorch1.8的一部分,但还是值得一提。Pytorchlightning已发布,可以使编码神经网络更加简单。可以将其视为Pytorch的Keras,使用广泛,其中的原因可归结为Keras显著的改进了Tensorflow,因为它使实现模型变得更加容易和快捷。在Pytorch中,Pytorchlightning起到了相同的作用。

该如何选择?

从本质上讲,这两个库都是相当不错的,它们在性能和功能上非常接近。总的来说,两个库之间的编码风格有所不同。

pytorch和tensorflow兼容吗(tensorflow与pytorch的区别)(2)

PyTorch以其OOP(面向对象编程)风格而闻名。例如,当创建自定义模型或自定义数据集时,你很可能会创建一个新类,该类继承默认的PyTorch库,然后在进行代码调整。尽管OOP以某种方式为代码提供了一种结构,但就代码行数而言,会使代码变得很长。

另一方面,当使用Tensorflow时,你很可能会使用Keras。例如在进行Kaggle比赛时(监督学习图像分类、目标检测、图像分割、NLP等任务),可以发现Keras的代码实现比PyTorch短。作为初学者/中级人员,这是非常不错的选择,因为你不必花费大量时间阅读和分解代码行。

在某些情况下,需要在特定的机器学习领域中寻找特定的模型。例如,当进行目标检测比赛时,想要实现DETR(Facebook的Data-Efficienttransformer),结果发现大部分资源都是用PyTorch编写的,因此在这种情况下,使用PyTorch更加容易。另外,PyTorch的代码实现更长,因为它们涵盖了许多底层细节。这既是优点也是缺点。当你是初学者时先学习低层级的细节,然后再使用更高层级的API(例如Keras)非常有帮助。但是,这同时也是一个缺点,因为你会发现自己迷失于许多细节和相当长的代码段中。因此,从本质上讲,如果你的工作期限很紧,最好选择Keras而不是PyTorch。

发表评论:

最近发表
网站分类
标签列表