python中backward函数_Pytorch学习之梯度计算backward函数
Pytorch在梯度方面提供的功能,大多是为神经网络而设计的。而官方文档给出的定义和解释比较抽象。以下将结合实例,总结一下自己对Pytorch中梯度计算backward函数的理解。
1. 简单的神经网络构建
首先我们看一个非常简单的神经网络。

假设x1,x2是神经网络的中间层,y是我们的输出层,Y是真实值,L是loss。w1和w2是对应于x1和x2的weight。
上图用数学公式表示为:
\(x2= w1 * x1\)
\(y = w2 * x2\)
\(L = Y - y\)
通常我们会把x1,w1,w2,x2,y使用PyTorch的Tensor进行表示。L也可以用Tensor表示(维度可能与其他Tensor不同)。
其中,我们把需要自己设定的Tensor(即不是通过其他Tensor计算得来的)叫做叶子Tensor。比如x1,w1和w2就是所谓的叶子Tensor。
在pytorch中,我们把上述模型表示出来。
import torch
import numpy as np
x1 = torch.from_numpy( 2*np.ones((2, 2), dtype=np.float32) )
x1.requires_grad_(True) #设置该tensor可被记录操作用于梯度计算
w1
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
