网站建设广东商丘市做网站的公司
网站建设广东,商丘市做网站的公司,设计培训班大概多少钱,开发app多少钱费用自动微分是一种计算张量#xff08;tensors#xff09;的梯度#xff08;gradients#xff09;的技术#xff0c;它在深度学习中非常有用。自动微分的基本思想是#xff1a;
自动微分会记录数据#xff08;张量#xff09;和所有执行的操作#xff08;以及产生的新张…
自动微分是一种计算张量tensors的梯度gradients的技术它在深度学习中非常有用。自动微分的基本思想是
自动微分会记录数据张量和所有执行的操作以及产生的新张量在一个由函数Function对象组成的有向无环图DAG中。在这个图中叶子节点是输入张量根节点是输出张量。通过从根节点到叶子节点追踪这个图可以使用链式法则chain rule自动地计算梯度。
在前向传播forward pass中自动微分同时做两件事 运行请求的操作来计算一个结果张量以及在 DAG 中保留操作的梯度函数。 在 DAG 中保留操作的梯度函数这就是说当你给自动微分一个张量和一个操作它不仅会计算出结果张量还会记住这个操作的梯度函数也就是这个操作对输入张量的导数。例如如果你给自动微分一个张量 x [1, 2, 3] 和一个操作 y x 1它不仅会计算出 y [2, 3, 4]还会记住这个操作的梯度函数是 dy/dx 1也就是说y 对 x 的导数是 1。这样当你需要计算梯度时自动微分就可以根据这个梯度函数来计算出结果张量对输入张量的梯度。在PyTorch中DAG是动态的。需要注意的一点是图是从头开始重新创建的;在每个 .backward() 调用之后autograd开始填充一个新的图。后向传播开始于当在 DAG 的根节点上调用 .backward() 方法。这个方法会触发自动微分开始计算梯度。自动微分会从每个 .grad_fn 中计算梯度这个 .grad_fn 是一个函数对象它保存了操作的梯度函数。例如如果一个操作是 y x 1那么它的 .grad_fn 就是 dy/dx 1。自动微分会将计算出的梯度累加到相应张量的 .grad 属性中这个 .grad 属性是一个张量它保存了结果张量对输入张量的梯度。例如如果一个结果张量是 y [2, 3, 4]那么它的 .grad 属性就是 [1, 1, 1]表示 y 对 x 的梯度是 1。使用链式法则chain rule自动微分会一直向后传播直到到达叶子张量。链式法则是一种数学公式它可以将复合函数的梯度分解为简单函数的梯度的乘积。例如如果一个复合函数是 z f(g(x))那么它的梯度是 dz/dx dz/dg * dg/dx。 import torch
import torch.nn as nn
M nn.Linear(2, 2) # neural network module
M.eval() # set M to evaluation mode
with torch.no_grad(): # disable gradient computationfor param in M.parameters(): # loop over all parametersparam.fill_(1) # fill the parameter with 1
M.requires_grad_(False)a torch.tensor([1., 2.], requires_gradTrue) # leaf node
b torch.tensor([13., 32.], requires_gradTrue) # leaf node
c M(a) # non-leaf node
c2 M(b) # non-leaf node
d c * 2 # non-leaf node
d.sum().backward() # compute gradients
print(a.grad)
print(b.grad)
print(c.grad)
print(d.grad)
print(M.weight.grad) # None构建计算图:当我们调用backward()方法时PyTorch会自动构建从叶子节点a到损失值d.sum()的计算图这是一个有向无环图表示了各个张量之间的运算关系。计算图中还包含了两个中间变量c和d它们是由a经过M模型的前向传播得到的。计算图的作用是记录反向传播的路径以便于计算梯度。 计算梯度:在计算图中每个张量都有一个属性grad用于存储它的梯度值。当我们调用backward()方法时PyTorch会沿着计算图按照链式法则计算并填充每个张量的grad属性。由于我们只对叶子节点a的梯度感兴趣所以只有a的grad属性会被计算出来而中间变量c和d的grad属性会被忽略。a的grad属性的值是损失值d.sum()对a的偏导数表示了a的变化对损失值的影响。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88459.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!