autograd自动微分
这部分概念参考自https://www.jianshu.com/p/5ae644748f21,感兴趣的小伙伴可以去看作者的原文。
假如我们有一个向量x=(1,1)当成input,经过一系列运算得到了output变量y,如下图所示:
如图所示,向量x经过与4和自身相乘之后得到向量z,z再求长度,得到y
我们想要求y关于x的微分时,pytorch会帮我们自动求解。
例子: part1:import torch from torch.autograd import Variable x = Variable(torch.ones(2), requires_grad = True)
x
x的结果:
tensor([1., 1.], requires_grad=True)
part2:
y = 4 * x ** 2 y
y的结果:
tensor([4., 4.], grad_fn=<MulBackward>)
part3:
y_1 = y.norm() y_1
y_1的结果:
tensor(5.6569, grad_fn=<NormBackward0>)
part4:
y_1.backward() x.grad
x.grad的结果:
tensor([5.6569, 5.6569])