PyTorch深度学习:利用pytorch实现线性回归

本文详细介绍了如何使用PyTorch库进行线性回归的全过程,包括数据预处理、模型构建(使用线性层)、损失函数选择(MSE)、优化器设置(SGD)以及训练周期中前向传播、损失计算、反向传播和参数更新的代码实现。

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

问题:

        若x=1,2,3与y=2,4,6一一对应,那么当x等于4时,y等于?

这次我们将利用PyTorch工具来实现线性回归

过程:

①:准备数据集

②:设计模型

③:构造损失函数和优化器

④:写训练周期

代码说明:

之前的forward()函数变为

y_pred = model(x_data)

loss()函数变为

criterion = torch.nn.MSELoss(size_average = False)

之前手动设定的梯度优化变为

optimizer = torch.optim.SGD(model.parameters(),lr = 0.01)

反向传播:

loss.backward()   

梯度数值更新:

 optimizer.step()  

具体代码实现如下:

import torch

x_data = torch.tensor([[1.0],[2.0],[3.0]])      #将x_data设置为tensor类型数据
y_data = torch.tensor([[2.0],[4.0],[6.0]])

class LinearModel (torch.nn.Module):
    def __init__ (self):
        super(LinearModel,self).__init__()      #继承父类
        self.linear = torch.nn.Linear(1,1)      #(1,1)指的是输入x,和y的特征维度

    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)   #定义梯度优化器为随机梯度下降

for epoch in range(10000):                  #训练过程
    y_pred = model (x_data)                 #向前传播,求y_pred
    loss = criterion (y_pred,y_data)        #根据y_pred和y_data求损失
    print(epoch,loss)                       

    optimizer.zero_grad()                   #将优化器数值清零
    loss.backward()                         #反向传播,计算梯度
    optimizer.step()                        #根据梯度更新参数

print("w = ",model.linear.weight.item())
print("b = ",model.linear.bias.item())

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、付费专栏及课程。

余额充值