《深度学习之图像识别核心技术与案例实战》—2.1.3 PyTorch简介

举报
华章计算机 发表于 2019/06/01 23:41:36 2019/06/01
【摘要】 本书摘自《深度学习之图像识别核心技术与案例实战》一书中的第2章,第2.1.3节,作者是言有三 。

2.1.3  PyTorch简介

  Torch是纽约大学的一个机器学习开源框架,几年前在学术界曾非常流行。但是由于其初始只支持Lua语言,导致应用范围没有普及。后来随着Python的生态越来越完善,Facebook人工智能研究院推出了Pytorch并开源。

  PyTorch不是简单地封装Torch并提供Python接口,而是对Tensor以上的所有代码进行了重构,同TensorFlow一样,增加了自动求导。PyTorch入门简单,上手快,堪比Keras,其代码清晰,设计直观,符合人类直觉。PyTorch的定位是快速实验研究,所以可直接用Python写新层。后来Caffe2全部并入Pytorch,如今已经成为了非常流行的框架。很多最新的研究如风格化、GAN等大多采用Pytorch源码。

  PyTorch的特点主要有以下两点:

  第一,动态图计算。TensorFlow是采用静态图,先定义好图,然后在Session中运算。图一旦定义好后是不能随意修改的。目前TensorFlow虽然也引入了动态图机制Eager Execution,只是不如PyTorch直观。TensorFlow要查看变量结果,必须在sess中,sess的角色仿佛是C语言的执行,而之前的图定义是编译。而Pytorch就好像是脚本语言,可随时随地修改,随处debug,没有一个类似编译的过程,比TensorFlow要灵活很多。

  第二,简单。TensorFlow的学习成本较高,对于新手来说,Tensor、Variable、Session等概念充斥,数据读取接口频繁更新,tf.nn、tf.layers、tf.contrib各自重复;PyTorch则是从Tensor到variable再到nn.Module,是从数据张量到网络的抽象层次的递进。

  这几大框架都有基本的数据结构,Caffe是Blob,TensorFlow和PyTorch都是Tensor,都是高维数组。PyTorch中的Tensor使用与Numpy的数组非常相似,两者可以互转且共享内存。PyTorch也为张量和Autograd库提供了CUDA接口。使用CUDA GPU,不仅可以加速神经网络训练和推断,还可以加速任何映射至PyTorch张量的工作负载。通过调用torch.cuda.is_available()函数,可检查PyTorch中是否有可用CUDA。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。