当前位置:网站首页>PyTorch到底好用在哪里?
PyTorch到底好用在哪里?
2022-07-23 07:43:00 【程序媛珂珂】
PyTorch到底好在哪,其实我也只是有个朦胧的感觉,总觉得用舒服自在,用其它框架的时候总是觉得这里或者那里别扭。第一次用PyTorch几乎是无痛上手,而且随着使用的增加,更是越来越喜欢:PyTorch不仅仅是定义网络结构简单,而且还很直观灵活。静态图的网络定义都是声明式的,而动态图可以随意的调用函数(if,for,list什么的随便用),两者的差距不是一点点。
网络的定义在任何框架中都应该是属于最基础最简单的一个内容,即使是接口繁多的tensorflow,通过不断的查文档,新手也能把模型搭起来或者是看懂别人的模型。这个PyTorch也不例外,它的优势在于模型定义十分直观易懂,很容易看懂看别人写的代码。
PyTorch这种动态图框架在debug的时候超级超级超级方便!因为基本上计算图运行出错的地方,就在图定义的那行代码上。

PyTorch优点有那些:
动态图,Tensor Numpy互转,pythonic,debug方便,可读性强,上手快,适合research,也不算优点吧,何大神在Facebook,估计开源的代码是pytorch实现的。
在pytorch将tensor转成numpy是多么的自然,而在tensorflow中又是多么的别扭,例如突然有一天我想将图中的中间节点拿出来,然后做个numpy运算,在继续运行图.就会发现pytorch是如此优雅,research不就是这么的充满骚操作么,project就得中规中矩的tensorflow。
其实PyTorch本质上是Numpy的替代者,而且支持GPU、带有高级功能,可以用来搭建和训练深度神经网络。如果你熟悉Numpy、Python以及常见的深度学习概念(卷积层、循环层、SGD等),会非常容易上手PyTorch。
Pytorch 本身设计之初就是以py为主,这就要求在cpp和python之间尽可能的向python 靠拢,所以在pytorch中,所有Module 类都含有对一个forward 和backward的方法,哪怕是不懂cffi ,也可以轻松使用cpp cuda拓展的op。
pytorch也是从torch迁移而来的,它非常适合于研究任务或者小型的部署任务。对于研究者或者学术而言,做出原型才是王道。pytorch几乎和python是一脉相承的,可以各种使用python的原生代码,写起来如沐春风,简洁明快。
而tensorflow 的方向是对的,符号编程,lazy就是比命令编程,eager先进,更适合并发并行的潮流。当然用户体验是第一位的,用户就是要爽,你先进但体验不好,对不起我不用。另外动态建图带来的好处是大大降低了调试的难度,相比于tf,你可以在任何地方监控变量的变化,而不用去开什么session。
动态建图使得你可以按照很常规的思路去实现自己定制的神经网络,完全不用动脑子去考虑如何迁移到静态图构建这种烂事儿上。符号编程和lazy是可以满足用户体验要求的。但是很可惜,tensorflow 自己实现的差,作为最有影响力的框架,败坏了符号编程的名声。
PyTorch更有利于研究人员、爱好者、小规模项目等快速搞出原型。而TensorFlow更适合大规模部署,特别是需要跨平台和嵌入式部署时。
免费分享一些我整理的人工智能学习资料给大家,整理了很久,非常全面。包括一些人工智能基础入门视频+AI常用框架实战视频、图像识别、OpenCV、NLQ、YOLO、机器学习、pytorch、计算机视觉、深度学习与神经网络等视频、课件源码、国内外知名精华资源、AI热门论文、行业报告等。
为了更好的系统学习AI,推荐大家收藏一份。
下面是部分截图,文末附免费下载方式。
一、人工智能免费视频课程和项目

二、人工智能必读书籍

三、人工智能论文合集

四、人工智能行业报告

学好人工智能,要多看书,多动手,多实践,要想提高自己的水平,一定要学会沉下心来慢慢的系统学习,最终才能有所收获。
点击下方名片,扫码免费下载文中资料。
边栏推荐
- How hot is July? Crawl through the crawler to get the temperature information of the current month, and use Matplotlib to draw the temperature line chart
- OSPF detailed explanation (LSA) (2)
- Connaissance détaillée du GRE, du mgre; Connaissance de la configuration de base de l'OSPF
- 数据链路层协议,PPP会话
- NR Modulation 5
- Matlab: convert PNG pictures into txt files
- 数据库系统原理与应用教程(041)—— MySQL 查询(三):设置查询条件
- 生活随笔:2022烦人的项目
- C#:in、out、ref关键字
- Image processing 7: test files
猜你喜欢

建立STM32F103C8T6工程模板和STM32 ST-LINK Utilit烧录hex文件

Google Earth engine -- a small bug in gee. Images of transcontinental boundaries cannot be obtained

内存取证之NSSCTF-OtterCTF 2018(复现赛)

C #: in, out, ref Keywords

Remove title block

Warcraft map editor trigger notes

Creo 9.0 中几何对象的选取方法

Google Earth Engine——gee中的小bug跨洲边际的影像无法获取

图像处理:生成3×3的窗口

CSDN recommended template
随机推荐
使用Stream流来进行分类展示。
sdf折射反射效果记录
Thousands of databases, physical machines all over the country, JD logistics full volume cloud live record | interview with excellent technical team
Creo 9.0 键鼠操作进行模型观察
Matlab: convert PNG pictures into txt files
数据库系统原理与应用教程(046)—— MySQL 查询(八):分组查询(GROUP BY)
【STM32】串口通信基础知识
What should I do if I use PIP in the virtual environment by default
生活随笔:2022烦人的项目
LeetCode_ 46_ Full Permutation
数据库系统原理与应用教程(038)—— MySQL 的索引(四):使用 EXPLAIN 命令分析索引
解决报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: “
数据库系统原理与应用教程(047)—— MySQL 查询(九):连接查询
golang远程服务器调试
LeetCode_ 2341_ How many pairs can an array form
数据库系统原理与应用教程(048)—— MySQL 查询(十):自连接查询
Unity制作简单拦截近防炮——如何预测打击目标
LeetCode_2342_数位和相等数对的最大和
[激光器原理与应用-7]: 半导体制冷片与TEC温控器
Kotlin - suspend function