用pytorch实现线性回归

本文介绍了使用PyTorch构建和训练线性模型的步骤,包括准备数据集、定义模型类、设置损失函数和优化器,以及进行训练循环。在训练过程中,注意损失函数的正确调用方式,避免输出错误。最后,展示了模型的权重和偏置,并进行了预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.准备数据集

先看公式:
在这里插入图片描述
所以,在写代码时,x,y要定义为矩阵。
在这里插入图片描述

模型要定义成一个继承自nn.Module的类:
在这里插入图片描述

二.使用类设计模型

在这里插入图片描述
在这里插入图片描述
call:
在这里插入图片描述
args & kwargs
在这里插入图片描述
在这里插入图片描述

三.构造损失和优化器

在这里插入图片描述

在这里插入图片描述

四.训练周期

在这里插入图片描述
**此处笔者有个小错误,输出应该是loss.item(),不然输出结果就如下图所示。
在这里插入图片描述

在这里插入图片描述

运行结果:

在这里插入图片描述
迭代了100次,还没有收敛,可以再多迭代几轮,也不要太多,以免模型过拟合。

整体代码:

import torch

x_data=torch.Tensor([[1.0],[2.0],[3.0]]) 
			#3*1的矩阵,行是样本,列是feature
y_data=torch.Tensor([[2.0],[4.0],[6.0]])

class LinearModel(torch.nn.Module):
    # nn.module公共基类
    def __init__(self):
        super(LinearModel,self).__init__()
        self.linear=torch.nn.Linear(1,1)
        
    def forward(self,x):
        y_pred=self.linear(x)
        return y_pred
    
model=LinearModel()

criterion=torch.nn.MSELoss(size_average=False) #损失函数
optimizer=torch.optim.SGD(model.parameters(),lr=0.01) 
#optim里的都是优化器,parameters可以找到所有参数

for epoch in range(100):
    y_pred=model(x_data)  #y_hat
    loss=criterion(y_pred,y_data)  #loss
    print(epoch,loss.item())
    
    optimizer.zero_grad() #梯度清零
    
    loss.backward() #反馈
    optimizer.step() #更新
    
print("w=",model.linear.weight.item())
print("b=",model.linear.bias.item())
#test model
x_test=torch.Tensor([[4.0]])
y_test=model(x_test)
print("y_pred=",y_test.data)

小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值