网站建设项目经理,敬请期待图片高清大图,为什么做免费视频网站,typecho转wordpress一、计算图
计算图是用来描述运算的有向无环图
计算图有两个主要元素#xff1a;结点#xff08;Node#xff09;和边#xff08;Edge#xff09;
结点表示数据#xff0c;如向量#xff0c;矩阵#xff0c;张量边表示运算#xff0c;如加减乘除卷积等
用计算图表…一、计算图
计算图是用来描述运算的有向无环图
计算图有两个主要元素结点Node和边Edge
结点表示数据如向量矩阵张量边表示运算如加减乘除卷积等
用计算图表示
y (x w) * (w1)a x wb w 1y a * b y (x w) * (w 1)
a x w
b w 1
y a * b
∂y/∂w (∂y/∂a) * (∂a/∂w) (∂y/∂b) * (∂b/∂w) b * 1 a * 1 b a (w 1) (x w) 2w x 1 2 * 1 2 1 5计算图与梯度求导 y (x w) * (w1)
叶子结点用户创建的结点称为叶子结点如X 与 W
is_leaf: 指示张量是否为叶子结点 grad_fn: 记录创建该张量时所用的方法函数 y.grad_fn a.grad_fn b.grad_fn 动态图
动态图vs 静态图 动态图 PyTorch 静态图 TensorFlow import torch
w torch.tensor([1.], requires_gradTrue) # 创建张量w并设置requires_gradTrue以计算梯度
x torch.tensor([2.], requires_gradTrue) # 创建张量x并设置requires_gradTrue以计算梯度a torch.add(w, x) # 执行加法操作计算w x得到张量a
b torch.add(w, 1) # 执行加法操作计算w 1得到张量b
y torch.mul(a, b) # 执行乘法操作计算a * b得到张量yy.backward() # 自动计算y对所有需要梯度的叶子结点的梯度
print(w.grad) # 打印w的梯度# 查看叶子结点
# 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)# 查看 grad_fn
print(grad_fn:\n, w.grad_fn, x.grad_fn, a.grad_fn, b.grad_fn, y.grad_fn)在这段代码中我们定义了两个张量w和x并且将它们设置为需要计算梯度requires_gradTrue。然后我们定义了计算图中的各个操作加法a w x加法b w 1乘法y a * b。 接下来我们调用y.backward()来自动计算y对于所有需要梯度的叶子结点的梯度。在这个例子中叶子结点是w和x。然后我们打印出w的梯度w.grad。 运行这段代码我们得到的输出是tensor([5.])即w的梯度为5。