python中backward函数_Pytorch学习之梯度计算backward函数

Pytorch在梯度方面提供的功能,大多是为神经网络而设计的。而官方文档给出的定义和解释比较抽象。以下将结合实例,总结一下自己对Pytorch中梯度计算backward函数的理解。

1. 简单的神经网络构建

首先我们看一个非常简单的神经网络。

9feb761afb3b57405d1489a3ac49a8a2.png

假设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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部