--------教程摘自b站【不愧是计算机博士唐宇迪128集课程一套搞定了我大学4年没学会的PyTorch】PyTorch从入门到实战全套课程(附带课程学习资料 )_哔哩哔哩_bilibili
二、autograd机制
框架干的最厉害的一件事就是帮我们把返向传播全部计算好了!
import torch
需要求导的,可以手动定义
#方法1
x = torch.randn(3,4,requires_grad=True) #随机创建一个3*4的矩阵 参数requires_grad=True表示可以对这个矩阵进行求导
#方法2
x = torch.randn(3,4)
x.requires_grad=True #也可以手动定义
例如
b = torch.randn(3,4,requires_grad=True)
t = x + b
y = t.sum() #对输入的tensor数据的某一维度求和
y.backward() #y的反向传播
b.grad #y对b的求导
一开始对b初始化了requires_grad=True 所以在对t求导的时候默认可以求导
#计算流程
x = torch.rand(1)
b = torch.rand(1, requires_grad = True)
w = torch.rand(1, requires_grad = True)
y = w * x
z = y + b
x.requires_grad, b.requires_grad, w.requires_grad, y.requires_grad#注意y也是需要的
(False, True, True, True)
x.is_leaf, w.is_leaf, b.is_leaf, y.is_leaf, z.is_leaf #是不是叶子(分支)
(True, True, True, False, False
反向传播计算
z.backward(retain_graph=True)#如果不清空会累加起来
w.grad