Bootstrap

Pytorch还是TensorFlow

深度学习框架的作用

问:什么是深度学习框架?

答:帮助我们构建、训练和部署神经网络模型的工具。

问:为什么深度学习需要专门的框架?

答:简化复杂的数学运算、优化计算性能等等。

深度学习框架概述

Caffe2013Caffe 的第二个版本 Caffe2 被 Facebook 开发并集成到 PyTorch 中
Theano20072017 年停止维护
Torch20022017 年被 PyTorch 取代
MXNet2015仍在维护中
Chainer20152021 年停止维护
DL4J2014仍在维护中
PaddlePaddle(飞桨)2016仍在维护中,尤其在中国市场
CNTK20162020 年停止维护
Neon20152016 年被英特尔收购后停止开发

早期的深度学习框架多种多样;不过就像商业战争一样,消亡与合并,最后受众最广的两个框架就是Pytorch和TensorFlow。

PyTorch

开发时间:PyTorch 由 Facebook 的人工智能研究实验室(FAIR)开发,于 2016 年 发布。

设计初衷与应用场景:PyTorch 最初设计的主要目标是为了学术研究快速原型开发。其开发理念是为了提供一种更灵活、动态的框架,帮助研究人员和开发者能够快速构建和测试新的神经网络模型。PyTorch 的“动态图”机制允许用户像编写普通 Python 程序一样逐步构建和运行神经网络,使得调试和实验非常方便。

  • 动态计算图 使得调试和代码可读性显著提升,用户可以立即查看每一行代码的执行结果。

TensorFlow

开发时间:TensorFlow 由 Google Brain 团队开发,于 2015 年 正式发布。

设计初衷与应用场景:TensorFlow 的设计初衷是为了大规模的分布式训练生产环境的部署。它继承了 Google 的第一代深度学习系统 DistBelief 的一些经验,目的是为 Google 内部和外部用户提供一个灵活且高效的框架,用于研究和实际应用中的深度学习模型训练和推理。TensorFlow 的设计重点是确保它能在各种不同硬件平台(如服务器、GPU、移动设备等)上高效运行,并能在大规模分布式系统中进行训练。

通过设计初衷和应用场景,我们可以看到,在阶段一,谷歌是为了在设备进行部署开发的TensorFlow,PyTorch则是主要方便模型构建,便于学术研究

截止到22年,顶会八成以上的深度学习框架采用的都是PyTorch。

TensorFlow 生态系统中还有多个工具,能够帮助开发者将深度学习模型部署到不同的设备和平台。 TensorFlow LiteTensorFlow ServingTensorFlow.js

TensorFlow Lite 是 TensorFlow 的轻量级版本,专门用于在移动设备(如 Android 和 iOS)、嵌入式设备和物联网(IoT)设备上运行深度学习模型。

TensorFlow Serving 是一个专门用于生产环境的高性能模型服务框架,旨在将 TensorFlow 训练好的模型部署为服务,以便为外部请求提供推理功能。

TensorFlow.js 是用于在 浏览器 和 Node.js 环境中运行深度学习模型的库。它允许开发者用 JavaScript 来构建和训练模型,或者在浏览器中运行已有的 TensorFlow 模型。

阶段二

TensorFlow

TensorFlow 1.x 版本强调静态图构建和高性能优化,但复杂的 API 和调试困难让初学者感到不友好。最终截止跟新1.15.0版本。

TensorFlow 2.x版本引入了 动态图机制(Eager Execution),使得计算图在执行时即时构建。用户可以像在 Python 中执行普通代码一样编写 TensorFlow 代码,这大大提高了灵活性和易用性。

 2017 年,随着 TensorFlow 的普及,Keras 被正式并入 TensorFlow,成为 TensorFlow 的官方高层 API。Keras 提供了一种更加简单、直观的方式来定义神经网络,用户可以通过几行代码构建复杂的模型。这特别适合初学者和快速原型开发。尽管 Keras 的界面简单,但由于它依赖于 TensorFlow 的底层计算,它可以利用 TensorFlow 的所有优势,如 GPU 加速、分布式训练、模型优化等。Keras 的并入使得 TensorFlow 生态系统更加统一。用户可以无缝地使用 TensorFlow 的其他组件(如 TensorFlow Serving、TensorFlow Lite)来进行模型部署,而无需在多个框架之间转换。

PyTorch

 2017 年,Caffe 的核心开发人员之一 Soumith Chintala 加入了 Facebook 并参与了 PyTorch 的开发。后来,Caffe 的第二个版本 Caffe2 被 Facebook 开发并集成到 PyTorch 中,形成了更为现代化和灵活的深度学习框架。因此,Caffe2 确实在某种程度上与 PyTorch 融合了,并成为了 PyTorch 的一部分。这种集成主要是为了提升框架的灵活性和生产部署能力。

小结

可以看到,无论是TensorFlow还是PyTorch都在学习对方的优势,TensorFlow2.x版本通过Keras明显的提升了便捷性和可操作性;而Pytorch也同时在部署端发力。

1、值得注意的是,在2.10.0版本之后TensorFlow放弃了对Windows的GPU支持,如果使用Windows系统进行训练,只能选择PyTorch

2、许多论文都是采用的Pytorch框架,研究算法模型的话,开源代码比较多,学习资源比较丰富。

3、但不能忽视的是,linux系统下TensorFlow大规模部署的优势

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;