pytorch简介


Posted in Python onNovember 11, 2020

一.Pytorch是什么?

  Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。

二.为什么选择 Pytorch?

 1.简洁:

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

2.速度:

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

3.易用:

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

4.活跃的社区:

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

三.PyTorch 的架构是怎样的?

  PyTorch(Caffe2) 通过混合前端,分布式训练以及工具和库生态系统实现快速,灵活的实验和高效生产。PyTorch 和 TensorFlow 具有不同计算图实现形式,TensorFlow 采用静态图机制(预定义后再使用),PyTorch采用动态图机制(运行时动态定义)。PyTorch 具有以下高级特征:

  • 混合前端:新的混合前端在急切模式下提供易用性和灵活性,同时无缝转换到图形模式,以便在C ++运行时环境中实现速度,优化和功能。   
  • 分布式训练:通过利用本地支持集合操作的异步执行和可从Python和C ++访问的对等通信,优化了性能。   
  • Python优先: PyTorch为了深入集成到Python中而构建的,因此它可以与流行的库和Cython和Numba等软件包一起使用。  
  • 丰富的工具和库:活跃的研究人员和开发人员社区建立了丰富的工具和库生态系统,用于扩展PyTorch并支持从计算机视觉到强化学习等领域的开发。   
  • 本机ONNX支持:以标准ONNX(开放式神经网络交换)格式导出模型,以便直接访问与ONNX兼容的平台,运行时,可视化工具等。   
  • C++前端:C++前端是PyTorch的纯C++接口,它遵循已建立的Python前端的设计和体系结构。它旨在实现高性能,低延迟和裸机C++应用程序的研究。 使用GPU和CPU优化的深度学习张量库。

四.Pytorch 与 tensorflow 之间的差异在哪里?

  上面也将了PyTorch 最大优势是建立的神经网络是动态的, 对比静态的 Tensorflow, 它能更有效地处理一些问题, 比如说 RNN 变化时间长度的输出。各有各的优势和劣势。两者都是大公司发布的, Tensorflow(Google)宣称在分布式训练上下了很大的功夫, 那就默认 Tensorflow 在分布式训练上要超出 Pytorch(Facebook),还有tensorboard可视化工具, 但是 Tensorflow 的静态计算图使得在 RNN 上有一点点被动 (虽然它用其他途径解决了), 不过用 PyTorch 的时候, 会对这种动态的 RNN 有更好的理解。而且 Tensorflow 的高度工业化, 它的底层代码很难看懂, Pytorch 好那么一点点, 如果深入 PytorchAPI, 至少能比看 Tensorflow 多看懂一点点 Pytorch 的底层在干啥。

五.Pytorch有哪些常用工具包?

  • torch :类似 NumPy 的张量库,强 GPU 支持 ;   
  • torch.autograd :基于 tape 的自动区别库,支持 torch 之中的所有可区分张量运行;   
  • torch.nn :为最大化灵活性未涉及、与 autograd 深度整合的神经网络库;   
  • torch.optim:与 torch.nn 一起使用的优化包,包含 SGD、RMSProp、LBFGS、Adam 等标准优化方式;
  • torch.multiprocessing: python 多进程并发,进程之间 torch Tensors 的内存共享;   
  • torch.utils:数据载入器。具有训练器和其他便利功能;   
  • torch.legacy(.nn/.optim) :处于向后兼容性考虑,从 Torch 移植来的 legacy 代码;

到此这篇关于pytorch简介的文章就介绍到这了,更多相关pytorch简介内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
彻底搞懂Python字符编码
Jan 23 Python
Python+Django搭建自己的blog网站
Mar 13 Python
pandas series序列转化为星期几的实例
Apr 11 Python
python 字符串和整数的转换方法
Jun 25 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Python的Lambda函数用法详解
Sep 03 Python
Django 请求Request的具体使用方法
Nov 11 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
Python远程linux执行命令实现
Nov 11 #Python
python 实现简单的计算器(gui界面)
Nov 11 #Python
python海龟绘图之画国旗实例代码
Nov 11 #Python
python 实现倒计时功能(gui界面)
Nov 11 #Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 #Python
Django基于Models定制Admin后台实现过程解析
Nov 11 #Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 #Python
You might like
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
python按比例随机切分数据的实现
2019/07/11 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
文明村创建实施方案
2014/03/27 职场文书
刑事代理授权委托书
2014/09/17 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
辞职信格式范文
2015/05/13 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
如何使用pdb进行Python调试
2021/06/30 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技