当前位置:   article > 正文

Pytorch线性回归实现(Pycharm实现)

Pytorch线性回归实现(Pycharm实现)

步骤都在注释里写清楚了,可以自己调整循环的次数观察输出的w与b和loss的值

  1. import torch
  2. #学习率,用来进行w和b的更新
  3. learning_rate = 0.01
  4. #1. 准备数据
  5. #这里使用y=3x+0.8.也就是w=3,b=0.8.创造一个500行1列的数据
  6. x=torch.rand([500,1])
  7. y_true=x*0.3+0.8
  8. #2. 通过模型计算y_predict。x*w,所以w是1行1列的.torch.matmul是矩阵乘法.只有浮点数才能使用grad。修改dtype
  9. w = torch.rand([1,1],requires_grad=True)
  10. b = torch.tensor(0,requires_grad=True,dtype=torch.float32)
  11. #4. 通过循环,反向传播,更新参数
  12. for i in range(5000):
  13. y_predict = torch.matmul(x, w) + b
  14. # 3. 计算loss.用平方来处理,这里mean不太清楚是什么意思。均方误差?这是什么?....每次都需要更新损失,所以把他放在循环里
  15. loss = (y_true - y_predict).pow(2).mean()
  16. #每次backward之前梯度置为0
  17. if w.grad is not None:
  18. w.grad.data.zero_()
  19. if b.grad is not None:
  20. b.grad.data.zero_()
  21. loss.backward() #反向传播.这时w和b的梯度就算出来了w.grad,b.grad
  22. w.data = w.data - learning_rate * w.grad
  23. b.data = b.data - learning_rate * b.grad #要注意左边不要写成grad,写成grad之后b的内容就一直是0
  24. print("w,b,loss",w.item(),b.item(),loss.item())

输出:

可以观察到w接近0.3,b接近0.8。和预想值十分接近了。

问题:

这里的理解有欠缺。。。

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

闽ICP备14008679号