Pytorch Note1 Pytorch介绍

  • PyTorch的诞生
  • 常见的深度学习框架简介
  • 为什么选择PyTorch
  • 总结一下Pytorch的特点
    • Python 优先
    • 命令式体验
    • 快速精益
  • 安装

全部笔记的汇总贴: Pytorch Note 快乐星球

PyTorch的诞生

2017年1月,Facebook人工智能研究院(FAIR)团队在GitHub上开源了PyTorch,并迅速占领GitHub热度榜榜首。

作为一个2017年才发布,具有先进设计理念的框架,PyTorch的历史可追溯到2002年就诞生于纽约大学的Torch。Torch使用了一种不是很大众的语言Lua作为接口。Lua简洁高效,但由于其过于小众,用的人不是很多,以至于很多人听说要掌握Torch必须新学一门语言就望而却步(其实Lua是一门比Python还简单的语言)。

考虑到Python在计算科学领域的领先地位,以及其生态完整性和接口易用性,几乎任何框架都不可避免地要提供Python接口。终于,在2017年,Torch的幕后团队推出了PyTorch。PyTorch不是简单地封装Lua Torch提供Python接口,而是对Tensor之上的所有模块进行了重构,并新增了最先进的自动求导系统,成为当下最流行的动态图框架。

PyTorch一经推出就立刻引起了广泛关注,并迅速在研究领域流行起来。图1所示为Google指数,PyTorch自发布起关注度就在不断上升,截至2017年10月18日,PyTorch的热度已然超越了其他三个框架(Caffe、MXNet和Theano),并且其热度还在持续上升中。

常见的深度学习框架简介

随着深度学习的发展,深度学习框架如雨后春笋般诞生于高校和公司中。尤其是近两年,Google、Facebook、Microsoft等巨头都围绕深度学习重点投资了一系列新兴项目,他们也一直在支持一些开源的深度学习框架。

目前研究人员正在使用的深度学习框架不尽相同,有 TensorFlow 、Caffe、Theano、Keras等,常见的深度学习框架如图2所示。这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。本部分主要介绍当前深度学习领域影响力比较大的几个框架

为什么选择PyTorch

这么多深度学习框架,为什么选择PyTorch呢?

因为PyTorch是当前难得的简洁优雅且高效快速的框架。在笔者眼里,PyTorch达到目前深度学习框架的最高水平。当前开源的框架中,没有哪一个框架能够在灵活性、易用性、速度这三个方面有两个能同时超过PyTorch。下面是许多研究人员选择PyTorch的原因。

因为PyTorch是当前难得的简洁优雅且高效快速的框架。在笔者眼里,PyTorch达到目前深度学习框架的最高水平。当前开源的框架中,没有哪一个框架能够在灵活性、易用性、速度这三个方面有两个能同时超过PyTorch。下面是许多研究人员选择PyTorch的原因。

  • ① 简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。不像TensorFlow中充斥着session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch的设计遵循tensor→variable(autograd)→nn.Module 三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。简洁的设计带来的另外一个好处就是代码易于理解。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。在笔者眼里,PyTorch的源码甚至比许多框架的文档更容易理解。

  • ② 速度:PyTorch的灵活性不以速度为代价,在许多评测中,PyTorch的速度表现胜过TensorFlow和Keras等框架 。框架的运行速度和程序员的编码水平有极大关系,但同样的算法,使用PyTorch实现的那个更有可能快过用其他框架实现的。

  • ③易用:PyTorch是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,Keras作者最初就是受Torch的启发才开发了Keras。PyTorch继承了Torch的衣钵,尤其是API的设计和模块的接口都与Torch高度一致。PyTorch的设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法,即所思即所得,不需要考虑太多关于框架本身的束缚。

  • ④活跃的社区:PyTorch提供了完整的文档,循序渐进的指南,作者亲自维护的论坛 供用户交流和求教问题。Facebook 人工智能研究院对PyTorch提供了强力支持,作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续的开发更新,不至于像许多由个人开发的框架那样昙花一现。

在PyTorch推出不到一年的时间内,各类深度学习问题都有利用PyTorch实现的解决方案在GitHub上开源。同时也有许多新发表的论文采用PyTorch作为论文实现的工具,PyTorch正在受到越来越多人的追捧 。

如果说 TensorFlow的设计是 “Make It Complicated” ,Keras的设计是 “Make It Complicated And Hide It” ,那么PyTorch的设计真正做到了 “Keep it Simple,Stupid” 。简洁即是美。

使用TensorFlow能找到很多别人的代码,使用PyTorch能轻松实现自己的想法。

PyTorch 的前身是 Torch,其是一个十分老牌、对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用,但由于其语言采用 Lua,导致在国内一直很小众,如今使用 Python 语言强势归来,快速的赢得了大量使用者。

PyTorch 提供了两种高层面的功能:

  • 使用强大的 GPU 加速的 Tensor 计算(类似 numpy)
  • 构建于基于 autograd 系统的深度神经网络

所以使用 PyTorch 的原因通常有两个:

  • 作为 numpy 的替代,以便使用强大的 GPU 加速;
  • 将其作为一个能提供最大灵活性和速度的深度学习研究平台

总结一下Pytorch的特点

Python 优先

PyTorch 不是简单地在整体 C++ 框架上绑定 Python,他深入构建在 Python 之上,你可以像使用 numpy/scipy/scikit-learn 那样轻松地使用 PyTorch,也可以用你喜欢的库和包在 PyTorch 中编写新的神经网络层,尽量让你不用重新发明轮子。

命令式体验

PyTorch 的设计思路是线性、直观且易于使用。当你需要执行一行代码时,它会忠实执行。PyTorch 没有异步的世界观。当你打开调试器,或接收到错误代码和 stack trace 时,你会发现理解这些信息是非常轻松的。Stack-trace 点将会直接指向代码定义的确切位置。我们不希望你在 debug 时会因为错误的指向或异步和不透明的引擎而浪费时间。

快速精益

PyTorch 具有轻巧的框架,集成了各种加速库,如 Intel MKL、英伟达的 CuDNN 和 NCCL 来优化速度。在其核心,它的 CPU 和 GPU Tensor 与神经网络后端(TH、THC、THNN、THCUNN)被编写成了独立的库,带有 C99 API。

安装

PyTorch 的安装非常方便,可以使用 Anaconda 进行安装,也可以使用 pip 进行安装,比如

使用 conda 进行安装
conda install pytorch torchvision -c pytorch

或者使用 pip
pip install http://download.pytorch.org/whl/cu80/torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl pip install torchvision

目前只支持 Mac OSX 和 Linux 系统,Windows 系统在不久之后也会支持,更多详细信息可以访问官网

下一章传送门:Note2 Pytorch环境配置

Pytorch Note1 Pytorch介绍相关推荐

  1. pytorch 的一些介绍以及常用工具包展示

    文章目录 一.pytorch 简介 二.pytorch 优势 三.pytorch 常用工具包 四.pytorch 注意点 五.pytorch 理解 六.pytorch-Tensor 1. tensor ...

  2. 【0基础入门Pytorch】Pytorch的简介与安装(Windows)

    任务内容: Pytorch简介 Pytorch的安装步骤 1. Pytorch简介 PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序.它主要由Facebook ...

  3. [Pytorch框架] PyTorch 中文手册

    PyTorch 中文手册 书籍介绍 这是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门. 由于本人水平有限,在写此教程的时候参考了一些网上的资料,在这里对他 ...

  4. 1.0 深度学习回顾与PyTorch简介 - PyTorch学习笔记

    P1 深度学习回顾与PyTorch简介 视频课程地址:点我 fly~~~ 本节课主要偏向于NLP,因为作者本人是做NLP方向NLP 预训练三种模型: BERT OpenAI GPT ELMo [NLP ...

  5. 【Pytorch】| Pytorch中softmax的dim的详细总结

    [Pytorch]| Pytorch中softmax的dim的详细总结 关于softmax的理解 一维向量:dim=0和dim=-1结果相同,dim=1和dim=2会报错 二维张量:dim=1和dim ...

  6. pytorch tensor_[PyTorch 学习笔记] 1.2 Tensor(张量)介绍

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py https: ...

  7. pytorch中Parameter()介绍

    用法介绍  pytorch中的Parameter函数可以对某个张量进行参数化.它可以将不可训练的张量转化为可训练的参数类型,同时将转化后的张量绑定到模型可训练参数的列表中,当更新模型的参数时一并将其更 ...

  8. PyTorch中torchvision介绍

          TorchVision包包含流行的数据集.模型架构和用于计算机视觉的图像转换,它是PyTorch项目的一部分.TorchVison最新发布版本为v0.11.1,发布较频繁,它的licens ...

  9. PyTorch中tensor介绍

          PyTorch中的张量(Tensor)如同数组和矩阵一样,是一种特殊的数据结构.在PyTorch中,神经网络的输入.输出以及网络的参数等数据,都是使用张量来进行描述.       torc ...

最新文章

  1. 《微信跳一跳》安卓手机刷分软件搭建及攻略
  2. 2017-2018-1 20155327 实验四 外设驱动程序设计
  3. python限制输入值范围_求python 中if 里如何设定一个值的范围
  4. 快速安装第三方库的指令——解决第三方库安装超时问题
  5. 你,的寒假作业写多少了?
  6. mysql 关联数组_在PHP / MySQL查询中创建关联数组
  7. common-jdbc:一个基于SpringJdbcTemplate的高性能数据库操作工具类库
  8. 从IP盗窃知悉:你的知识产权如何被盗?
  9. 中国油页岩资源开发利用行业前景动态及未来发展趋势预测报告(2022-2027年)
  10. [数字图像处理·冈萨雷斯 ] 图像文件格式
  11. win7查看远程连接了计算机名,win7怎么查看远程连接信息 win7远程连接设置教程...
  12. 调用微信二维码识别开源库
  13. excel查找出不来了_Excel查找值不唯一,一个VLOOKUP公式拖拉出多个结果啦
  14. linux内核-进程与进程调度
  15. Opera无法打开网页的解决办法
  16. 分布式系统实践学习总结
  17. java怎么读_java怎么读
  18. 在sqli-liabs学习SQL注入之旅(第二十一关~第三十关)
  19. 特征选择-过滤式选择
  20. 【第3版emWin教程】第50章 emWin6.x的AppWizard使用控件经典回调方式

热门文章

  1. 传统施封与智能施封的区别
  2. Failed to connect to /xxx.xxx.xxx:50010 for block, add to deadNodes and continue
  3. 29. Linux网络抓包——nmap,tcpdump
  4. 【数据收集】名义变量、序级变量、区间变量、比率变量的理解及例子
  5. UVa 11374 - Airport Express
  6. Android投屏帧率码率
  7. WORD2010设置正文页码(不包括目录和封皮)
  8. 怎么用云服务器跑matlab,云服务器 跑matlab
  9. 利用IPSec安全策略阻断内网违规外联(二)
  10. 学生如何快速申请软件著作权证书攻略,1个人和多个著作权人申请软著注意事项详解?