亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 云计算

PyTorch 与 TensorFlow:深度比较

深度学习的日益普及创造了深度学习框架之间的良性竞争。 PyTorch 和 TensorFlow 作为两个最流行的深度学习框架脱颖而出。这些库正在为率先成为主要的深度学习工具展开正面竞争。

TensorFlow 较老,因此一直处于领先地位,但 PyTorch 在过去六个月赶上了。在为项目选择深度学习框架时,在做出正确选择时存在很多困惑。

本文比较了 PyTorch 与 TensorFlow,并提供了两个框架的深入比较。

PyTorch 与 TensorFlow:概述

PyTorch 和 TensorFlow 都会跟踪他们的竞争对手在做什么。但是,这两个框架之间仍然存在一些差异。

注意: 此表格可水平滚动。

PyTorch TensorFlow 2.0
创建者 FAIR 实验室(Facebook AI 研究实验室) 谷歌大脑团队
基于 手电筒 Theano
生产 研究重点 专注于行业
可视化 视觉 张量板
部署 Torch 服务(实验性) TensorFlow 服务
移动部署 是的(实验性) 是的
设备管理 CUDA 自动化
图形生成 动态和静态模式 渴望和静态模式
学习曲线 对开发人员和科学家来说更容易 更容易进行行业级项目
U 案例 脸书
车联网
特斯拉
自动驾驶仪
优步
高温
谷歌
创新工场
风险投资
贝宝
中国移动

1。可视化

手工完成的可视化需要时间。 PyTorch 和 TensorFlow 都有用于快速可视化分析的工具。这使得审查培训过程更容易。可视化也非常适合展示结果。

TensorFlow

Tensorboard 用于可视化数据。该界面是交互式的且具有视觉吸引力。 Tensorboard 提供了指标和训练数据的详细概述。数据很容易导出,看起来非常适合演示目的。插件使 Tensorboard 也可用于 PyTorch。

但是,Tensorboard 使用起来很麻烦,也很复杂。

PyTorch

PyTorch 使用 Visdom 进行可视化。该界面轻巧且易于使用。 Visdom 是灵活和可定制的。对 PyTorch 张量的直接支持使其易于使用。

Visdom 缺乏交互性和许多用于概览数据的基本功能。

2。图生成

有两种类型的神经网络架构生成:

TensorFlow

TensorFlow 从一开始就使用静态图。静态图允许分布在多台机器上。模型独立于代码部署。在使用新架构时,静态图的使用使 TensorFlow 对生产更加友好和灵活。

TensorFlow 添加了一项模拟动态图的功能,称为急切执行。 TensorFlow 2 默认在 Eager Execution 上运行。关闭 Eager Execution 时可以生成静态图。

PyTorch

PyTorch 从一开始就具有动态图。这一特性使 PyTorch 与 TensorFlow 竞争。

事实证明,随时随地更改图形的能力是一种对程序员和研究人员更友好的神经网络生成方法。使用动态图更容易处理结构化数据和数据中的大小变化。 PyTorch 还提供静态图。

3.学习曲线

学习曲线取决于以前的经验和使用深度学习的最终目标。

TensorFlow

TensorFlow 是更具挑战性的库。 Keras 函数使 TensorFlow 更易于使用。一般来说,对于刚开始深度学习的人来说,TensorFlow 是很难理解的。

这背后的原因是 TensorFlow 的多样化功能。有许多功能需要探索和解决。对于初学者来说,这会分散注意力并且是多余的。

PyTorch

PyTorch 是更容易学习的库。如果熟悉 Python,则代码更容易试验。在 PyTorch 中创建神经网络有一种 Pythonic 方法。 PyTorch 的灵活性意味着代码对实验友好。

PyTorch 的功能并不丰富,但所有基本功能都可用。 PyTorch 更容易上手和学习。

4.部署

部署是对软件开发团队很重要的软件开发步骤。软件部署使程序或应用程序可供消费者使用。

TensorFlow

TensorFlow 使用 TensorFlow Serving 用于模型部署。 TensorFlow 服务 专为生产和工业环境而设计。使用 REST 客户端 API 进行灵活且高性能的部署。 TensorFlow 服务 与 Docker 和 Kubernetes 很好地集成。

PyTorch

PyTorch 最近开始解决部署问题。 火炬发球 部署 PyTorch 模型。有一个用于应用程序集成的 RESTful API。 PyTorch API 可扩展用于移动部署。 火炬发球 与 Kubernetes 集成。

5. 并行和分布式训练

并行性和分布式训练对于大数据至关重要。一般指标是:


有两种分配训练工作量的方法:

TensorFlow 模型并行性

要将模型的一部分放置在 TensorFlow 中的特定设备中,请使用 tf.device .

例如,在两个不同的 GPU 设备上拆分两个线性层:

import tensorflow as tf

from tensorflow.keras import layers

with tf.device(‘GPU:0’):

        layer1 = layers.Dense(16, input_dim=8)

with tf.device(‘GPU:1’):

        layer2 = layers.Dense(4, input_dim=16)

PyTorch 模型并行性

使用 nn.Module.to 将模型的一部分移动到 PyTorch 中的不同设备 方法。

例如,将两个线性层移动到两个不同的 GPU:

import torch.nn as nn
layer1 = nn.Linear(8,16).to(‘cuda:0’)
layer2 = nn.Lienar(16,4).to(‘cuda:1’)

TensorFlow 数据并行

要在 TensorFlow 中进行同步 SGD,请使用 tf.distribute.MirroredStrategy() 设置分发策略 并包装模型初始化:

import tensorflow as tf
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = …
model.compile(...)

使用包装器编译模型后,像往常一样训练模型。

PyTorch 数据并行

对于 PyTorch 中的同步 SGD,将模型包装在 torch.nn.DistributedDataParallel 模型初始化后,设置设备编号等级从零开始:

from torch.nn.parallel import DistributedDataParallel.
model = ...
model = model.to()
ddp_model = DistributedDataParallel(model, device_ids=[])

6.设备管理

管理设备时会发生巨大的性能变化。 PyTorch 和 TensorFlow 都很好地应用了神经网络,但执行方式不同。

TensorFlow

如果 GPU 可用,TensorFlow 会自动切换到 GPU 使用。可以控制 GPU 及其访问方式。 GPU 加速是自动化的。这意味着无法控制内存使用。

PyTorch

PyTorch 使用 CUDA 来指定 GPU 或 CPU 的使用情况。如果没有用于 GPU 和 CPU 的 CUDA 规范,该模型将无法运行。 GPU 的使用不是自动化的,这意味着可以更好地控制资源的使用。 PyTorch 通过 GPU 控制增强了训练过程。

7.两种深度学习平台的用例

TensorFlow 和 PyTorch 最初是在各自的公司中使用的。自从开源以来,谷歌和 Facebook 之外的用例也很多。

TensorFlow

谷歌大脑团队的谷歌研究人员首先将 TensorFlow 用于谷歌研究项目。 Google 将 TensorFlow 用于:

Google 之外也有许多用例。例如:

PyTorch

Facebook AI 研究人员实验室 (FAIR) 首次在 Facebook 使用 PyTorch。 Facebook 将 PyTorch 用于:

PyTorch 是开源的。现在有很多 Facebook 之外的用例,比如:

你应该使用 PyTorch 还是 TensorFlow?

PyTorch 是程序员和科学研究人员最喜欢的选择。在查看引用次数时,科学界更喜欢 PyTorch。凭借最近的部署和生产功能,PyTorch 是从研究到生产的绝佳选择。

组织和初创公司通常使用 TensorFlow。部署和生产功能使 TensorFlow 在企业用例中享有盛誉。使用 Tensorboard 进行可视化也向客户展示了优雅的演示。

PyTorch 和 TensorFlow 是强大的深度学习库,正在密集开发。今天,两者之间的相似之处多于不同之处,从一个切换到另一个是一个无缝的过程。


云计算

  1. AWS 和 Azure:服务概述和比较
  2. 制造业中的物联网:深入观察
  3. GPS 对比。 RFID:资产定位技术的比较
  4. ZigBee Vs. XBee:易于理解的比较
  5. 物联网应用的蓝牙和 ZigBee 比较
  6. 蜂窝物联网——CIoT 技术的比较
  7. 数控木工车床与传统木工车床的比较
  8. 电容分压器:深入指南
  9. 3D 技术比较:SLA 与 FDM
  10. 深入了解离心水泵
  11. 珩磨和研磨的比较
  12. 采矿输送带比较