《深度学习之图像识别:核心技术与案例实战》 ——2.1.3 PyTorch简介
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。
- 点赞
- 收藏
- 关注作者
评论(0)