PyTorch的发展
- 2002年发布Torch
是一个通用的机器学习的计算框架,但由于其主要的开发语言是Lua语言,所以没有通用起来 - 2016年
Facebook在原来Torch7(2011)的基础之上重新开发了一个框架,并且命名为Pytorch,沿用了c和c++的计算后端
PyTorch与同类框架
可以大致分成三个阵营(Google、Facebook、Microsoft)
Chainer是日本的一款,Pytorch借鉴了其API的设计规范
框架的\演化过程如下:
大多数会选择Pytorch或者TensorFlow,那么这二者的区别主要在于是静态图优先还是动态图优先。
PyTorch使用动态图,每执行一次操作都会重新构建一个新的计算图,比如说像下面这样,程序会按照我们编写的命令执行下去,那么调试起来会更容易
TensorFlow使用静态图,要先定义计算图,然后再去使用它(相当于先去定义,再去使用,无法查看中间变量输出)。
静态图 | 动态图 | |
---|---|---|
定义方式 | 计算图在运行之间就定义好 | 计算图在运行是动态构建 |
执行效率 | 计算图已经构建好,可以优化 | 动态构建优化空间小 |
易用性 | 需要用户手动管理计算图的构建和执行,会增加编程的复杂性 | 更接近于普通的编程语言 |
自动微分 | 需要额外的步骤来支持自动微分 | 支持自动微分,可以直接获取梯度 |
PyTorch功能
PyTorch生态系统
CV方向就是有TorchVision,NLP领域就有AllenNLP,图卷积有PyTorch geometric……
举例PyTorch用途
自动求导
比如对于公式
y
=
a
2
x
+
b
x
+
c
y=a^2x+bx+c
y=a2x+bx+c中对于x=1时的a,b,c求偏导
得到的结果如下