当前位置: 首页 > 科技观察

PyTorch1.8与Tensorflow2.5,我应该使用哪一个?

时间:2023-03-17 10:06:43 科技观察

自深度学习重新获得认可以来,众多机器学习框架相继涌现,争相成为研究者和行业从业者的新宠。从早期的学术成果Caffe和Theano,到拥有巨大产业支撑的PyTorch和TensorFlow,面对海量的学习框架,很多研究者不知该如何选择?机器学习框架。Tensorflow/Keras和PyTorch是迄今为止最受欢迎的两个主要机器学习库。TensorFlow由谷歌团队开发,2015年发布。PyTorch由Facebook团队开发,2017年开源在GitHub上。为了充分发挥不同机器学习框架的优势,很多机器学习从业者比较不同的框架,通过比较优缺点选择最合适的框架。在本文中,我们比较了机器学习库(PyTorch1.8和Tensorflow2.5):最新版本中的新功能;使用哪一个以及为什么。Tensorflow2.xVSPytorch1.8Tensorflow2.xTensorFlow1和TensorFlow2.x之间有很多变化。首先是Tensorflow.js的发布。随着Web应用程序日益占据主导地位,在浏览器上部署模型的需求大大增加。借助Tensorflow.js,您可以使用Node在浏览器中运行现有的python模型,重新训练现有模型,并使用Javascript(不需要python)完全构建和训练模型。Tensorflow2.x中的另一个版本是TensorflowLite,这是一个用于在移动和嵌入式设备上部署模型的轻量级库。这是因为移动和Web应用程序是两种最主要的应用程序类型。使用TensorflowLite,您可以简单地将现有模型转换为“压缩平面缓冲区”,然后将缓冲区加载到移动设备或任何其他嵌入式设备中。这期间发生的主要优化过程是将32位浮点值转换为8位,更适合嵌入式设备(内存占用少)。还包括TensorflowExtended(TFX)的发布,这是一个用于部署生产ML管道的端到端平台。它在机器学习的3个最重要领域(Web应用程序、移动应用程序和生产管理)做得很好。机器学习生产流水线仍然需要大量的研究和开发。TFX解决了经典的软件生产挑战,例如可扩展性、可维护性和模块化。此外,它还可以帮助解决机器学习的特定挑战,例如持续在线学习、数据验证、数据管理等。PyTorch1.8与TensorflowLite类似,PyTorch改进了其现有的PytorchMobile。该框架为Android和iOS量化、跟踪、优化和保存模型。还发布了PytorchLiteInterpreter的原型,它减少了移动设备上二进制运行时的大小。此外,通过更具体的错误处理和流水线并行性,对分布式训练提供了更多支持。PytorchProfiler用于分析APP、模型执行时间、执行过程、内存消耗等。虽然Pytorch闪电不属于PyTorch1.8,但值得一提。Pytorch闪电已发布,使编码神经网络更加容易。把它想象成广泛使用的Pytorch的Keras,其原因归结为Keras通过使模型的实现变得更容易和更快来显着改进Tensorflow。在Pytorch中,Pytorch闪电具有相同的目的。如何选择?本质上,这两个库都非常好,它们在性能和功能上非常接近。总体而言,两个库之间的编码风格存在差异。PyTorch以其OOP(面向对象编程)风格而闻名。例如,在创建自定义模型或自定义数据集时,您很可能会创建一个继承自默认PyTorch库的新类,然后进行代码调整。尽管OOP以某种方式为代码提供了结构,但就代码行而言,它会使代码变得非常长。另一方面,在使用Tensorflow时,您很可能会使用Keras。比如在进行Kaggle竞赛(监督学习图像分类、物体检测、图像分割、NLP等)时,可以发现Keras的代码实现要比PyTorch短。作为初学者/中级,这很棒,因为您不必花费大量时间阅读和分解代码行。在某些情况下,您需要在特定的机器学习领域中找到特定的模型。比如在做物体检测比赛的时候,想实现DETR(Facebook的Data-Efficienttransformer),结果发现大部分资源都是用PyTorch写的,所以在这种情况下,用PyTorch更容易。此外,PyTorch的代码实现更长,因为它们涵盖了许多底层细节。这既是优势也是劣势。当您是初学者时,在继续使用更高级别的API(例如Keras)之前了解低级别的细节非常有帮助。然而,这也是一个缺点,因为您会发现自己迷失在许多细节和相当长的代码段中。因此,从本质上讲,如果您的工作期限很紧,最好选择Keras而不是PyTorch。