linux 之父出席、干货分享、圆桌讨论,精彩尽在 opencloudos 社区开放日,报名戳
写点什么

深度学习为什么要选择 pytorch-金马国际

  • 2020 年 4 月 16 日
  • 本文字数:3658 字

    阅读完需:约 12 分钟

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


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


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


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



2016 年,facebook 发布了面向编程场景的,它是基于 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 框架的扩展。简单的调试和一套优秀的简单 就能使程序员轻松驾驭 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__
复制代码


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

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


6. 移动开发就绪

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


pytorch mobile 入门:


  • android:

  • ios:


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


作者简介:


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


原文链接:




2020 年 4 月 16 日 11:332661

评论

发布
暂无评论
  • 2020 年 11 月 2 日

  • 学了这么久的可视化,这门课对你有什么帮助?你有没有什么话想说?

    2020 年 9 月 4 日

  • 近日,在旧金山的pytorch开发者大会上,facebook发布了pytorch 1.0的一个预览版本(链接:https://code.fb.com/ai-research/facebook-accelerates-ai-development-with-new-partners-and-production-capabilities-for-pytorch-1-0/)。pytorch是一个开源的深度学习框架,用以协助科研项目的产业落地。在本次更新中,许多投资是公有云和硬件公司提供的,以更好地支持pytorch生态系统。

  • 在最近的一篇博文中,bill jia宣布了pytorch 的新版本1.0的发布。pytorch是用于python的开源ai框架软件包,具有tensor计算和深度神经网络。该新版本的重要性在于,减少了从研究过程到生产过程中转移ai驱动的项目所需的时间,同时提高了这些应用程序的准确性和性能。

  • 在 gluon 中,您可以使用简单、清晰和简洁的代码定义神经网络。

  • “talk is cheap. show me the code.”这门课也一样,我希望与你一起从0实现一个推荐系统。

    2020 年 9 月 21 日

  • 2018年10月收集的github项目主要包括计算机视觉、谷歌最新开源的bert框架的pytorch实现、提取最新的研究论文及摘要,等等。

  • 今年的f8大会上,facebook发布了pytorch1.1版本,据介绍,这一版本将更加适合生产使用,改进了包括分布式训练的处理等等细节,更重要的是,这一版本的pytorch获得了来自谷歌的协助,并可以支持tensorflow的可视化工具tensorboard。

  • 起初,tensorflow的主要目的是为构建神经网络提供高性能api。然而,借助机器学习社区对它的兴趣及时间优势,这个类库演变成一个完整的ml生态系统。

  • 作为ai关注者,如果本月你没有及时跟进重大新闻,那么很可能会错过一个重磅消息。事实上,何止是重磅消息,有人认为整个ai行业的格局都将发生改变!那就是tensorflow 2.0的推出。

  • 本文翻译自 madison may 发布的 python deep learning frameworks reviewed,经原作者授权由infoq中文站翻译并分享。本文对于常用的基于 python 的深度学习框架 theano、 lasagne、 blocks、 tensorflow、keras、mxnet、pytorch 进行了介绍与优劣比较,有助于深度学习入门者对于这些框架形成初步的认识。

  • 要在整个机器学习栈中添加对一个新的深度学习框架的支持,既费资源,又费时间。

  • ludwig是一个基于谷歌tensorflow框架的开源“工具箱”,它允许用户在不编写代码的情况下训练和测试深度学习模型。

  • 本文将跟大家分享作者在处理tensorflow适配和版本选择问题方面的经验,希望对你有所帮助。

  • tensorflow现在已经不仅是一个单纯的工具包了。

  • 你是否也因为知识面不够广、工具不够丰富,而寄望用单一的工具来解决所有问题?想要成为一名优秀的可视化工程师,这还远远不够。

    2020 年 10 月 14 日

  • 这篇文章主要给了一些基础性的知识,包括基本原理、图书、课程、文章和相关算法。你顺着我画的这路走,成为一个机器学习的高级工程师甚至准专家还是可能的。

    2018 年 7 月 26 日

  • 作为开发者,我们要真切地了解云上ai究竟有哪些能力,知道怎样让它和应用程序的开发和运行集成。

    2020 年 4 月 8 日

  • 为目标。版本之间的所有(已知的)差异,主要是思维方式的改变,并着重介绍了新实现的优缺点。为目标。版本之间的所有(已知的)差异,主要是思维方式的改变,并着重介绍了新实现的优缺点。

    ai
  • 为什么这三家公司最终都不约而同地放弃 tensorflow ,而转向了 pytorch?

发现更多内容

gpu容器虚拟化:用户态和内核态的技术和实践详解

gpu容器虚拟化:用户态和内核态的技术和实践详解

网站地图