pytorch五:用Variable实现线性回归

31 篇文章 453 订阅 ¥9.90 ¥99.00

一、手动计算梯度实现线性回归

#导入相关包
import torch as t
import matplotlib.pyplot as plt

#构造数据
def get_fake_data(batch_size = 8):
    #设置随机种子数,这样每次生成的随机数都是一样的
    t.manual_seed(10)
    #产生随机数据:y = 2*x+3,加上了一些噪声
    x = t.rand(batch_size,1) * 20
    #randn生成期望为0方差为1的正态分布随机数
    y = x * 2 + (1 + t.randn(batch_size,1)) * 3 
    return x,y

#查看生成数据的分布
x,y = get_fake_data()
plt.scatter(x.squeeze().numpy(),y.squeeze().numpy())

#线性回归

#随机初始化参数
w = t.rand(1,1)
b = t.zeros(1,1)
#学习率
lr = 0.001    

for i in range(10000):
    x,y = get_fake_data()
    
    #forward:计算loss
    y_pred = x.mm(w) + b.expand_as(y)

    #均方误差作为损失函数
    loss = 0.5 * (y_pred - y)**2 
    loss = loss.sum()
    
    #backward:手动计算梯度
    dloss = 1
    dy_pred = dloss * (y_pred - y)
    dw = x.t().mm(dy_pred)
    db = dy_pred.sum()
    
    #更新参数
    w.sub_(lr * dw)
    b.sub_(lr * db)
    
    if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值