当前位置:   article > 正文

Pytorch线性回归实现(原理)

Pytorch线性回归实现(原理)

设置梯度

直接在tensor中设置 requires_grad=True,每次操作这个数的时候,就会保存每一步的数据。也就是保存了梯度相关的数据。

  1. import torch
  2. x = torch.ones(2, 2, requires_grad=True) #初始化参数x并设置requires_grad=True用来追踪其计算历史
  3. print(x)
  4. #tensor([[1., 1.],
  5. # [1., 1.]], requires_grad=True)
  6. y = x+2
  7. print(y)
  8. #tensor([[3., 3.],
  9. # [3., 3.]], grad_fn=<AddBackward0>)
  10. z = y*y*3 #平方x3
  11. print(x)
  12. #tensor([[27., 27.],
  13. # [27., 27.]], grad_fn=<MulBackward0>)
  14. out = z.mean() #求均值
  15. print(out)
  16. #tensor(27., grad_fn=<MeanBackward0>)

                                                        图1.1

想要修改的话:x.requires_grad_(True),就把x变为可以追踪(中间计算结果都保存)的数了。

不想修改了

  1. with torch.no_gard():
  2. c = (a * a).sum() #tensor(151.6830),此时c没有gard_fn

把内容放在torch.no_gard():下就可以了

梯度计算

计算梯度:直接调用.backward()就行。

例如上面图1.1,out.backward()就行

获取梯度:调用那个数.gard

注意:如果.grad在循环中,每次都会和之前的.grad叠加。

所以每次反向传播之后,都需要把梯度变为0再进行操作。


 

使用.data获取里面的数据。相当于直接拷贝了一份数据,而不改变原数据的内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/217611
推荐阅读
相关标签
  

闽ICP备14008679号