自动求导流程
pytorch中自动求导比较简单,不需要用计算图。主要就是写公式,反向传播,求导。
#1.定义变量
x = torch.range(1,5)
x.requires_grad = True
#2.定义函数
y = 2*x
#3.反向传播
y.sum().backward()
#4.求导
x.grad
#5.清零
x.grad.zero_()
#6.另一个计算
y1 = x*x
#7.反向传播
y1.sum().backward()
#8.求导
x.grad
运行结果:
(1)定义变量
此处注意tensor需要是浮点数类型,在示例中使用torch.range()而不是torch.arange()就是这一原因。
通过.require_grad = True声明这是一个变量。
(2)定义函数 只需要按照公式打出就可以。
(3)反向传播
要求是一个标量,若直接使用y.backward()会报错: