Pytorch手写线性回归案例

  • 自定义数据,采用torch实现简单的线性回归,假设基础模型为:x*5+7.4{\color{Cyan} },通过迭代更新获得预测权重
  1. 准备训练数据。
  2. 计算预测值
  3. 计算损失值,同时参数梯度设置为0,最后采用反向传播
  4. 更新参数
  5. 画图分析


# -*- coding: utf-8 -*-
"""
Created on Mon Apr 24 08:04:00 2023

@author: 茶墨先生
"""

import torch
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import Subplot
"准备数据"
#y=5x+7.4
x=torch.rand([800,1])#torch.Size([800, 1])
y_true=x*5+7.4#torch.Size([800, 1])

"计算预测值,设置参数"
w=torch.rand([1,1],requires_grad=True)
b=torch.tensor(0.,requires_grad=True)

"定义学习率"
LR=0.01

"循环操作,更新参数"

for i in range(400):
    "计算损失"
    y_preidct=torch.matmul(x,w)+b
#    pri
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch是一个流行的深度学习框架,其中包含了一系列用于构建神经网络的工具和函数。线性回归机器学习中最简单的算法之一,用于预测一个连续的目标变量。 在PyTorch中,我们可以使用torch.nn模块来构建一个简单的线性回归模型。下面是一个应用线性回归案例: 假设我们有一个数据集包含了房子的面积和价格。我们想使用线性回归模型来预测给定房子面积时的价格。首先,我们需要导入PyTorch库和相关的模块。 ``` import torch import torch.nn as nn import matplotlib.pyplot as plt import numpy as np ``` 接下来,我们需要定义数据集。假设我们有100个房子的数据,每个数据包含房子的面积和价格。 ``` # 定义输入数据 x = np.random.rand(100, 1) # 生成对应的标签 y = 3 + 4 * x + np.random.randn(100, 1) ``` 然后,我们将数据转换为PyTorch的张量格式。 ``` x = torch.from_numpy(x).float() y = torch.from_numpy(y).float() ``` 接下来,我们需要定义一个线性回归模型。 ``` # 定义线性回归模型 model = nn.Linear(1, 1) ``` 然后,我们需要定义损失函数和优化器。 ``` # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.01) ``` 接下来,我们需要训练模型。 ``` # 训练模型 num_epochs = 1000 for epoch in range(num_epochs): # 前向传播 outputs = model(x) loss = criterion(outputs, y) # 反向传播并优化 optimizer.zero_grad() loss.backward() optimizer.step() # 打印训练信息 if (epoch+1) % 100 == 0: print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item())) ``` 最后,我们可以使用训练好的模型对新的数据进行预测。 ``` # 使用训练好的模型进行预测 predicted = model(x).detach().numpy() # 绘制真实值和预测值的散点图 plt.scatter(x.numpy(), y.numpy(), color='blue') plt.plot(x.numpy(), predicted, color='red') plt.show() ``` 通过以上步骤,我们成功地使用PyTorch实现线性回归模型,并且通过散点图展示了预测结果和真实值的对比。线性回归模型可以用于各种预测问题,如房价预测、销售量预测等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值