计算图
是用来描述运算的有向无环图
两个主要元素 结点Node 边 Edge
结点表示数据 向量 矩阵 张量
边表示运算 加减乘除卷积
使梯度求导更加方便
import torch
w = torch.tensor([1.],requires_grad=True)
x = torch.tensor([2.],requires_grad=True)
a = torch.add(w,x)
# 保存相应张量的梯度
a.retain_grad()
b = torch.add(w,1)
y = torch.mul(a,b)
y.backward()
print(w.grad)
# 叶子节点:用户创建的节点成为叶子节点 如X与W
# is_leaf 指示张量是否为叶子节点
print("is leaf:\n",w.is_leaf,x.is_leaf,a.is_leaf,b.is_leaf,y.is_leaf)
# 查看梯度
print("gradient:\n",w.grad,x.grad,a.grad,b.grad,y.grad)
根据计算图搭建方式,可以将计算图分为静态图和动态图
动态图 运算与搭建同时进行 灵活 易调节
静态图 先搭建 后运算 高效 不灵活