写点什么

深度学习为什么要选择 PyTorch

  • 2020-04-16
  • 本文字数:3658 字

    阅读完需:约 12 分钟

深度学习为什么要选择 PyTorch

过去几年来,深度学习和机器学习是公众最热门的词汇,对此我们有一个完美的解释。


正是因为有了机器学习,系统才能够从经验中学习;而深度学习,则利用庞大的数据集将机器学习带到了更大的规模。


在机器学习和深度学习的推动下,各种编程语言和库应运而生,并使程序员、研究人员和数据科学家们实现了不可思议的成就。


在深度学习领域,TensorFlow和 PyTorch 两个库之间的最强者之争由来已久,在本文中,我们将更多地关注 PyTorch。



2016 年,Facebook 发布了面向编程场景的 PyTorch,它是基于 Lua 的 Torch 库。


PyTorch 是一个免费的开源机器学习库,当前版本为 1.4。PyTorch 已发布近三年,经多番改进,现已处于最佳状态。创建 PyTorch 是为了让人感觉比其他竞争对手更快,更 “Python 化”。Pytorch 也支持 C、C++ 和张量计算。


Google Trend:Python 热度随时间变化的趋势


选择 PyTorch 进行深度学习的原因

在谈到为什么不试试 PyTorch 之前,让我们先看看下面列举的几个独特而令人兴奋的深度学习项目和库,这些都是 PyTorch 促成的:


  • CheXNet:利用深度学习技术在胸片上进行放射科医师级别的肺炎检测。

  • Horizon:应用强化学习平台(Applied RL)。

  • PYRO:Pyro 是一种通用的概率编程语言(probabilistic programming language ,PPL),用 Python 编写,后端由 PyTorch 支持。

  • NVIDIA 的 Kaolin:作为加速 3D 深度学习的 PyTorch 库,用于加速 3D 深度学习。

  • TorchCV:将计算机视觉应用到项目中。

  • PyDLT:一套深度学习工具。

  • fastai 库:用来优化神经网络训练过程。

  • 以及更多。


这些都是建立在 TensorFlow 和 PyTorch 之上的框架和项目。

PyTorch 的优越性

在 TensorFlow 的世界里, PyTorch 能够凭借自己的强项坚守自己。下面是 PyTorch 的一些亮点,解释了为什么 PyTorch 适合深度学习项目。

1. PyTorch 更 “Python 化”

PyTorch 是一个实用框架,它可以让我们以更 “Python 化” 的方式编写代码。此外,它使用朴素的 Python 代码所支持的那种动态特性是非常了不起的。


与任何其他库相比,PyTorch 更倾向于 Python。这是因为 PyTorch 相对容易理解,而且感觉更自然、更原生,和 Python 代码一致。对于任何使用过 PyTorch 的人来说,他们都会对 PyTorch 的一切有一种亲切的感觉,比如损失函数、优化器、转换、数据加载器以及更多的类。


每个 PyTorch 示例(计算机视觉和自然语言处理)的代码都有一个共同的结构:


data/experiments/model/    net.py    data_loader.pytrain.pyevaluate.pysearch_hyperparams.pysynthesize_results.pyevaluate.pyutils.py
复制代码


  • model/net.py:指定神经网络架构、损失函数和评估指标。

  • model/data_loader.py:指定数据应如何馈送到网络。

  • train.py:包含主训练循环。

  • evaluate.py:包含用于评估模型的主循环。

  • utils.py:用于处理超参数/日志/存储模型的实用功能。

2. 易于使用

与 PyTorch 相比,TensorFlow 的学习曲线相对较徒。Python 程序员需要较少的时间即可使用 PyTorch,因为对他们来说,PyTorch 更像是 Python 框架的扩展。简单的调试和一套优秀的简单 API 就能使程序员轻松驾驭 PyTorch。

3. 有用的库

在社区的大力支持下,人们的社区的热情和贡献也越来越大。程序员使用 PyTorch 创建了一些项目,有兴趣的读者可以去看看。下面是一个综合列表,列出了计算机视觉、自然语言处理和生成库等不同领域的一些项目:


  • pro_gan_pytorch:利用 ProGAN 功能。

  • BoTorch:使用贝叶斯优化。

  • ParlAI:用于共享、训练和测试对话模型。

  • OpenNMT-py:用于实现神经机器翻译系统。

  • MUSE:用于多语言词嵌入。

  • skorch:用于将 scikit-learn 代码与 PyTorch 融合。

4. 轻松实现数据并行

PyTorch 中的数据并行(Data Parallel)非常高效,可以将数据分成若干批,然后发送到多个 GPU 进行处理。使用这种技术,PyTorch 可以将很大一部分工作负载从 CPU 转移到 GPU。为了实现数据并行,它使用了 torch.nn.DataParallel 类。


Distributed Data-Parallel(分布式数据并行)是 PyTorch 的一项特性,你可以将其与 Data-Parallel(数据并行)结合使用来处理需要大型数据集和模型的用例,这些数据集和模型对单个 GPU 来说过于庞大。当 GPU 池上的所有任务完成之后,结果将被收集、合并,再由 Data-Parallel 发回给你。


def get_cnn(self, arch, pretrained):        """Load a pretrained CNN and parallelize over GPUs        """        if pretrained:            print(("=> using pre-trained model '{}'".format(arch)))            model = models.__dict__[](pretrained=True)        else:            print(("=> creating model '{}'".format(arch)))            model = models.__dict__<a href="">arch
if arch.startswith('alexnet') or arch.startswith('vgg'): model.features = nn.DataParallel(model.features) model.cuda() else: model = nn.DataParallel(model).cuda()
return model</a href="">
复制代码

5. 至少 70%开发者使用 PyTorch

PyTorch 是研究人员的神器,因为事实证明,开发框架的研究人员至少有 70% 都在使用 PyTorch。尽管 TensorFlow 是业界领先的应用开发选择,但它在这方面还没有赶上 PyTorch。这背后的一个原因可能是 PyTorch 的简单易用性和更好的性能。

6. 移动开发就绪

从版本 1.3 开始,PyTorch 就增加了对 Android 和 iOS 设备部署的支持。这一特性,为边缘设备带来了 PyTorch 的所有优势,以满足需要较低延迟的应用。PyTorch mobile 背后的目标是通过支持移动平台的基础 API 来缩短开发周期,从而无需导出到诸如 Caffe2 之类的移动框架。这样可以大大减少设备上的占用空间。此外,为了更好地控制,还增加了对构建脚本的精确调优的支持。


PyTorch Mobile 入门:


7. 易于调试

当你可以选择访问每一行,并在每一行后打印的常规方式,PyTorch 调试起来很容易。锦上添花的是,PyTorch 中的对象和操作包含了实际的数据而不是符号引用,这让程序员的工作变得更加轻松。PyTorch 的一些标准调试器是:


  • ipdb

  • pdb

  • PyCharm


例如,你可以使用 pdb 的 pdb.set.trace() 函数在代码中放置断点,从而深入到错误的根源。此外,PyTorch 的动态计算图允许在代码执行时进行动态修改和快速调试。



使用 pdb 进行 PyTorch 调试

8. 支持 ONNX

开放神经网络交换格式(Open Neural Network Exchange,OONX)作为人工智能的开源生态系统,为人工智能程序员提供了一个共同的平台,让他们可以在各种框架、工具和库上进行互换工作。ONNX 通过提供可跨多个框架和硬件工作的标准文件格式来实现这一目标。


说到 PyTorch,ONNX 内置了对 PyTorch 和其他一系列框架的支持,如 Caffe2、MXNet、TensorFlow 等等。ONNX 使开发人工智能的程序员更容易导出和迁移他们的 PyTorch 模型,使之成为其他框架可以集成的开放格式。


import torch.onnximport torchvision
dummy_input = torch.randn(1, 3, 224, 224) model = torchvision.models.alexnet(pretrained=True) torch.onnx.export(model, dummy_input, "alexnet.onnx")
复制代码


PyTorch 原生 ONNX 支持

9. 支持动态计算图

通过将每个模型视为有向无环图,PyTorch 提供了一种定义计算图的动态方法。虽然其他框架也允许静态图定义,但 PyTorch 还支持创建动态计算图,你可以随时对其进行操作。从 PyTorch 的动态特性中获益最多的一个元素是递归神经网络。

10. 强大的社区支持

PyTorch 还提供了优秀的社区支持。PyTorch 的主页上就有关于它每个特性的详细文档。对库的所有最新更新都作了很好的解释。对于每个新添加的内容,都可以找到辅导教程和相关资源,易于上手。


PyTorch 论坛是一个非常好的、值得强烈推荐的地方,新手可以在论坛发帖提问,资深工程师也可以在论坛与程序员朋友分享自己的想法。每天都有超过 100 个帖子,这个社区非常活跃,并鼓励人们加入 PyTorch。


下面是一些 PyTorch 开发人员社区、资源和教程,你可以通过这些资源和教程来贡献、学习和解惑:


PyTorch Discuss form


PyTorch Slack Community


PyTorch Examples


PyTorch Docs


Github Pytorch Tutorials


PyTorch Beginner Cheatsheet


PyTorch Release Notes


Deep Learning With Pytorch : A 60 Minute Blitz


Using Tutorial data from Google Drive in Colab


Docs and Tutorials in Chinese


Tutorials in Korean

结语

PyTorch 为深度学习程序员提供了大量直观的功能,它为不同技能水平的人们提供了很多帮助。尽管提供了一个简单的切入点,但 PyTorch 也不容小觑,因为它提供的功能不仅在某些方面提供了更好的性能,还提供了额外的独特功能。我们在本文讨论了一些最常被提及的 PyTorch 的特性,以帮助那些对 PyTorch 摇摆不定的人做出选择。


作者简介:


Claire D.,Digitalogy 内容专员,帮助企业在 48 小时内与前 5% 的预先筛选的软件人才建立联系。


原文链接:


https://towardsdatascience.com/reasons-to-choose-pytorch-for-deep-learning-c087e031eaca


2020-04-16 11:333387

评论

发布
暂无评论
发现更多内容

一键多开,高效沟通!WechatTweak微信多开神器来袭!

Rose

MES系统中的生产看板在生产管理中的应用与价值

万界星空科技

数据可视化 mes 万界星空科技 电子看板 生产看板

Qualcomm IPQ9570 and IPQ5312 WiFi 7 Chips Foundation of Future Networks: Comprehensive Analysis

wifi6-yiyi

WiFi7

终于有人从零到精通开始教大模型开发了!基于PyTorch与ChatGLM

程序员高级码农

Python 人工智能 大数据 AI 互联网

EndNote 21大客户授权版 v21.2永久激活版

Rose

部署电影收藏管理器Radarr

轶天下事

Flexus X实例性能测评

轶天下事

(2024永久密钥JProfiler)JProfiler for mac下载安装

Rose

Illustrator 2024下载-AI2024中文破解教程

Rose

京东关键词搜索商品列表数据接口(JD.item_search)

tbapi

京东API接口 京东商品列表接口

Windows Server 2022 中文版、英文版下载 (2024 年 12 月更新)

sysin

windows

银翼新境 致态TiPro9000引领个人存储PCIe 5.0新时代

新消费日报

YouTube视频播放器 Clicker for YouTube mac版

Rose

大模型,在内卷中寻找出口

脑极体

AI

Bartender 4 for Mac(菜单栏应用管理软件)

Mac相关知识分享

Windows Server 2019 中文版、英文版下载 (2024 年 12 月更新)

sysin

windows

Windows Server 2025 OVF (2024 年 12 月更新) - VMware 虚拟机模板

sysin

windows

云服务器Flexus X实例|MySQL应用加速测试

轶天下事

Windows Server 2025 中文版、英文版下载 (2024 年 12 月更新)

sysin

windows

NetScaler Console Release 14.1 Build 38.53 (ESXi, Hyper-V, KVM, Xen) - 集中管理 NetScaler

sysin

NetScaler

Axure RP 10中文汉化安装包 好用的交互式原型设计工具-mac/win

Rose

数据库管理利器!Navicat for MySQL,让数据操作更便捷

Rose

SpringBoot中15个常用启动扩展点,你用过几个?

架构师之道

Java springboot

半导体未来三大支柱:先进封装、晶体管和互连

E科讯

Windows Server 2022 OVF (2024 年 12 月更新) - VMware 虚拟机模板

sysin

windows

NetScaler Release 14.1 Build 38.53 (nCore, VPX, SDX, CPX, BLX)

sysin

NetScaler

cdr平面设计软件下载 CorelDRAW for mac最新中文版附激活秘钥

Rose

编程必备!sublime text轻盈高效,编程更流畅

Rose

程序员失业没offer、空窗期长!掌握Java架构核心宝典就能逆袭!

程序员高级码农

Java 编程 程序员 java面试 Java面试题

Windows Server 2019 OVF (2024 年 12 月更新) - VMware 虚拟机模板

sysin

windows

深度学习为什么要选择 PyTorch_文化 & 方法_Claire D._InfoQ精选文章