[deep learning] 模型调研

2018
2019
值得注意的是,当时的 PyTorch 在职位数量增长方面尤其亮眼,与 TensorFlow 之间的差距非常小。而且,除了领英之外,PyTorch 在所有求职网站上的职位增加量都超过了 TensorFlow。

2020:PyTorch 顶会独领风骚,职场优势追赶 TensorFlow

  • 二者现在都可以在动态 eager execution 模式或静态图模式下运行
  • PyTorch 的社区也在不断扩大
  • TensorFlow 2.0 也引入了不少新的改进,使得 API 更加精简,对大脑更加友好。此外,TensorFlow 紧密集成了 Keras 作为其前端和高级 API。
  • 与 PyTorch 相比,TensorFlow 在产品和边缘设备深度学习中仍然拥有更加丰富的功能,但是 PyTorch 的功能也在逐渐完善。
    PyTorch 更适用于研究、爱好者和小规模项目的快速原型开发。TensorFlow 更适合大规模部署,尤其是涉及跨平台和嵌入式部署时。

tensorflow与pytorch调研
发展趋势:pytorch 获胜
2018:tensorflow碾压pytorch
2019:pytorch火力全开,tensorflow增长乏力
2020:pytorch在学术界,顶会独领风骚,职场上追赶tensorflow

上手时间:pytorch 获胜
Pytorch替代numpy,与 Python 语言的整合更紧密,易于上手,对新手友好。
编写 TensorFlow 代码时,它会被Python编译成图(graph),然后由 TensorFlow 执行引擎运行,新手难以理解这额外工序及一些概念。

创建图与调试:pytorch 获胜
PyTorch 图结构是动态图,内存使用很高效。图构建方式更容易理解,更容易调试,可以在任何地方设置断点。
TensorFlow 图结构是静态图,调试 TensorFlow有两个选择,一是从会话中请求你想检查的变量,二是学习使用 TensorFlow 调试器(tfdbg)
PS: TensorFlow2.0版本提供了使用 TensorFlow Fold 库实现动态图的方式,而 PyTorch 的动态图是内置的。

分布式训练:pytorch 获胜
在数据并行化方面,PyTorch 优化性能的方式是利用 Python 对异步执行的本地支持。
TensorFlow 时,你必须手动编写代码,并微调要在特定设备上运行的每个操作,以实现分布式训练。

可视化:TensorFlow 获胜
在训练过程的可视化方面,TensorFlow 更有优势。可视化能帮助开发者跟踪训练过程以及实现更方便的调试。TensorFlow 的可视化库名为 TensorBoard。PyTorch 开发者则使用 Visdom,但是 Visdom 提供的功能很简单且有限。

TensorBoard 的特性:
跟踪和可视化损失和准确度等指标
可视化计算图(操作和层)
查看权重、偏差或其它张量随时间变化的直方图
展示图像、文本和音频数据 分析
TensorFlow 程序

Visdom 的特性
处理回调
绘制图表和细节
管理环境

生产部署:TensorFlow 获胜
TensorFlow可以直接使用 TensorFlow serving 在 TensorFlow 中部署模型,这是一种使用了 REST Client API 的框架。
PyTorch 时,在最新的 1.0 稳定版中,生产部署要容易一些,但它没有提供任何用于在网络上直接部署模型的框架。你必须使用 Flask 或 Django 作为后端服务器。

职位需求:pytorch 获胜
2018,tensorflow需求人数是pytorch的3倍。
2019,tensorflow需求人数是pytorch的2倍。

TensorFlow 的优点:
简单的内置高级 API 使用 TensorBoard 可视化训练
通过 TensorFlow serving 容易实现生产部署
很容易的移动平台支持 开源
TensorFlow 的缺点:
静态图
调试方法
难以快速修改
2.0版本后,文档混乱

PyTorch 的优点:
类 Python 的代码,简单易上手
动态图
轻松快速的编辑
良好的文档和社区支持
开源
很多项目都使用 PyTorch
PyTorch 的缺点:
可视化需要第三方
生产部署需要 API 服务器

上手时间

获胜者:PyTorch

上手 TensorFlow 的时间肯定会比 PyTorch 长。

  • PyTorch 本质上是支持 GPU 的 NumPy 替代,配备了可用于构建和训练深度神经网络的更高级的功能。所以如果你熟悉 NumPy、Python 和常用的深度学习抽象(卷积层、循环层、SGD 等),那 PyTorch 就很容易学。
  • TensorFlow 看作是一种嵌入 Python 的编程语言。当编写 TensorFlow 代码时,它会被 Python「编译」成图(graph),然后由 TensorFlow 执行引擎运行。有些 TensorFlow 新手难以理解这额外增加的间接一层工序。同样因为这个原因,TensorFlow 还有一些需要额外学习的概念,比如会话(session)、图、变量范围和占位符。要让基本的模型跑起来也需要更多样板代码。

创建图和调试

获胜者:PyTorch

PyTorch 中,图结构是动态图; TensorFlow 图结构是静态图。(tensorflow2.0版本有改进)

  • 创建和运行计算图可能是这两个框架差别最大的地方。在 PyTorch 中,图结构是动态的,也就是说图是在运行时创建的。在 TensorFlow 中,图结构是静态的,也就是说图在「编译」之后再运行。
  • **PyTorch 简单的图构建方式更容易理解,但也许更重要的是也更容易调试。**调试 PyTorch 代码就跟调试 Python 代码一样。你可以使用 pdb,并且可以在任何地方设置断点。调试 TensorFlow 则没这么容易。它有两个选择,一是从会话中请求你想检查的变量,而是学会使用 TensorFlow 调试器(tfdbg)。

覆盖度

获胜者:TensorFlow
TensorFlow 仍然支持一些 PyTorch 并不支持的功能。PyTorch 目前还不具备的特性包括:

  • 沿维度方向的张量翻转(np.flip、 np.flipud、 np.fliplr)
  • 检查张量是否为 NaN
  • 和无穷大(np.is_nan、np.is_inf) 快速傅立叶变换(np.fft)

而 TensorFlow 支持所有这些。另外比起 PyTorch,TensorFlow 的 contrib 包也有远远更多更高级的函数和模型。

谷歌的 Tensorflow

优势

TensorFlow 现已被公司、企业与创业公司广泛用于自动化工作任务和开发新系统,其在分布式训练支持、可扩展的生产和部署选项、多种设备(比如安卓)支持方面备受好评。

Facebook 的 PyTorch

优势

PyTorch 很简洁、易于使用、支持动态计算图,内存使用很高效,因此越来越受欢迎。

PyTorch 也有两个核心模块:
计算图的按需和动态构建
Autograd:执行动态图的自动微分

图会随着执行过程而改变和执行节点,没有特殊的会话接口或占位符。整体而言,这个框架与 Python 语言的整合更紧密,大多数时候感觉更本地化。因此,PyTorch 是更 Python 化的框架,TensorFlow 则感觉完全是一种新语言

TensorFlow 提供了使用 TensorFlow Fold 库实现动态图的方式,而 PyTorch 的动态图是内置的

分布式训练

在数据并行化方面,PyTorch 优化性能的方式是利用 Python 对异步执行的本地支持。而用 TensorFlow 时,你必须手动编写代码,并微调要在特定设备上运行的每个操作,以实现分布式训练。

可视化

在训练过程的可视化方面,TensorFlow 更有优势。可视化能帮助开发者跟踪训练过程以及实现更方便的调试。TensorFlow 的可视化库名为 TensorBoard。PyTorch 开发者则使用 Visdom,但是 Visdom 提供的功能很简单且有限,所以 TensorBoard 在训练过程可视化方面更好。

TensorBoard 的特性:

  • 跟踪和可视化损失和准确度等指标
  • 可视化计算图(操作和层)
  • 查看权重、偏差或其它张量随时间变化的直方图
  • 展示图像、文本和音频数据 分析
  • TensorFlow 程序
    TensorBoard可视化

Visdom 的特性

  • 处理回调
  • 绘制图表和细节
  • 管理环境
    Visdom可视化

生产部署

将训练好的模型部署到生产方面,TensorFlow 显然是赢家。我们可以直接使用 TensorFlow serving 在 TensorFlow 中部署模型,这是一种使用了 REST Client API 的框架。

使用 PyTorch 时,在最新的 1.0 稳定版中,生产部署要容易一些,但它没有提供任何用于在网络上直接部署模型的框架。你必须使用 Flask 或 Django 作为后端服务器。所以,如果要考虑性能,TensorFlow serving 可能是更好的选择。

TensorFlow 的优点:

  • 简单的内置高级 API 使用 TensorBoard 可视化训练
  • 通过 TensorFlow serving 容易实现生产部署
  • 很容易的移动平台支持 开源

TensorFlow 的缺点:

  • 静态图
  • 调试方法
  • 难以快速修改
  • 2.0版本后,文档混乱

PyTorch 的优点:

  • 类 Python 的代码,简单易上手
  • 动态图
  • 轻松快速的编辑
  • 良好的文档和社区支持
  • 开源
  • 很多项目都使用 PyTorch

PyTorch 的缺点:

  • 可视化需要第三方
  • 生产部署需要 API 服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值