广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pytorch实现线性回归以及多元回归
  • 124
分享到

pytorch实现线性回归以及多元回归

2024-04-02 19:04:59 124人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了PyTorch实现线性回归以及多元回归的具体代码,供大家参考,具体内容如下 最近在学习pytorch,现在把学习的代码放在这里,下面是GitHub链接 直接附上g

本文实例为大家分享了PyTorch实现线性回归以及多元回归的具体代码,供大家参考,具体内容如下

最近在学习pytorch,现在把学习的代码放在这里,下面是GitHub链接

直接附上github代码


# 实现一个线性回归
# 所有的层结构和损失函数都来自于 torch.nn
# torch.optim 是一个实现各种优化算法的包,调用的时候必须是需要优化的参数传入,这些参数都必须是Variable
 
x_train = np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],[9.779],[6.182],[7.59],[2.167],[7.042],[10.791],[5.313],[7.997],[3.1]],dtype=np.float32)
y_train = np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],[3.366],[2.596],[2.53],[1.221],[2.827],[3.465],[1.65],[2.904],[1.3]],dtype=np.float32)
 
# 首先我们需要将array转化成tensor,因为pytorch处理的单元是Tensor
 
x_train = torch.from_numpy(x_train)
y_train = torch.from_numpy(y_train)
 
 
# def a simple network
 
class LinearRegression(nn.Module):
    def __init__(self):
        super(LinearRegression,self).__init__()
        self.linear = nn.Linear(1, 1)  # input and output is 2_dimension
    def forward(self, x):
        out = self.linear(x)
        return out
 
 
if torch.cuda.is_available():
    model = LinearRegression().cuda()
    #model = model.cuda()
else:
    model = LinearRegression()
    #model = model.cuda()
 
# 定义loss function 和 optimize func
criterion = nn.MSELoss()   # 均方误差作为优化函数
optimizer = torch.optim.SGD(model.parameters(),lr=1e-3)
num_epochs = 30000
for epoch in range(num_epochs):
    if torch.cuda.is_available():
        inputs = Variable(x_train).cuda()
        outputs = Variable(y_train).cuda()
    else:
        inputs = Variable(x_train)
        outputs = Variable(y_train)
 
    # forward
    out = model(inputs)
    loss = criterion(out,outputs)
 
    # backWord
    optimizer.zero_grad()  # 每次做反向传播之前都要进行归零梯度。不然梯度会累加在一起,造成不收敛的结果
    loss.backward()
    optimizer.step()
 
    if (epoch +1)%20==0:
        print('Epoch[{}/{}], loss: {:.6f}'.fORMat(epoch+1,num_epochs,loss.data))
 
 
model.eval()  # 将模型变成测试模式
predict = model(Variable(x_train).cuda())
predict = predict.data.cpu().numpy()
plt.plot(x_train.numpy(),y_train.numpy(),'ro',label = 'original data')
plt.plot(x_train.numpy(),predict,label = 'Fitting line')
plt.show()

结果如图所示:

多元回归:


# _*_encoding=utf-8_*_
# pytorch 里面最基本的操作对象是Tensor,pytorch 的tensor可以和numpy的ndarray相互转化。
# 实现一个线性回归
# 所有的层结构和损失函数都来自于 torch.nn
# torch.optim 是一个实现各种优化算法的包,调用的时候必须是需要优化的参数传入,这些参数都必须是Variable
 
 
# 实现 y = b + w1 *x + w2 *x**2 +w3*x**3
import os
os.environ['CUDA_DEVICE_ORDER']="PCI_BUS_ID"
os.environ['CUDA_VISIBLE_DEVICES']='0'
import torch
import numpy as np
from torch.autograd import Variable
import matplotlib.pyplot as plt
from torch import nn
 
 
# pre_processing
def make_feature(x):
    x = x.unsqueeze(1)   # unsquenze 是为了添加维度1的,0表示第一维度,1表示第二维度,将tensor大小由3变为(3,1)
    return torch.cat([x ** i for i in range(1, 4)], 1)
 
# 定义好真实的数据
 
 
def f(x):
    W_output = torch.Tensor([0.5, 3, 2.4]).unsqueeze(1)
    b_output = torch.Tensor([0.9])
    return x.mm(W_output)+b_output[0]  # 外积,矩阵乘法
 
 
# 批量处理数据
def get_batch(batch_size =32):
 
    random = torch.randn(batch_size)
    x = make_feature(random)
    y = f(x)
    if torch.cuda.is_available():
 
        return Variable(x).cuda(),Variable(y).cuda()
    else:
        return Variable(x),Variable(y)
 
 
 
# def model
class poly_model(nn.Module):
    def __init__(self):
        super(poly_model,self).__init__()
        self.poly = nn.Linear(3,1)
    def forward(self,input):
        output = self.poly(input)
        return output
 
if torch.cuda.is_available():
    print("sdf")
    model = poly_model().cuda()
else:
    model = poly_model()
 
 
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3)
 
epoch = 0
while True:
    batch_x, batch_y = get_batch()
    #print(batch_x)
    output = model(batch_x)
    loss = criterion(output,batch_y)
    print_loss = loss.data
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    epoch = epoch +1
    if print_loss < 1e-3:
        print(print_loss)
        break
 
model.eval()
print("Epoch = {}".format(epoch))
 
batch_x, batch_y = get_batch()
predict = model(batch_x)
a = predict - batch_y
y = torch.sum(a)
print('y = ',y)
predict = predict.data.cpu().numpy()
plt.plot(batch_x.cpu().numpy(),batch_y.cpu().numpy(),'ro',label = 'Original data')
plt.plot(batch_x.cpu().numpy(),predict,'b', ls='--',label = 'Fitting line')
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: pytorch实现线性回归以及多元回归

本文链接: https://www.lsjlt.com/news/123235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytorch实现线性回归以及多元回归
    本文实例为大家分享了pytorch实现线性回归以及多元回归的具体代码,供大家参考,具体内容如下 最近在学习pytorch,现在把学习的代码放在这里,下面是github链接 直接附上g...
    99+
    2022-11-12
  • pytorch实现线性回归和多元回归的方法
    本篇内容介绍了“pytorch实现线性回归和多元回归的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近在学习pytorch,现在把学习...
    99+
    2023-06-14
  • pytorch实现线性回归
    pytorch实现线性回归代码练习实例,供大家参考,具体内容如下 欢迎大家指正,希望可以通过小的练习提升对于pytorch的掌握 # 随机初始化一个二维数据集,使用朋友torch...
    99+
    2022-11-12
  • 多元线性回归LinearRegression
    目录 1.1多元线性回归的基本原理 1.2 最小二乘法求解多元线性回归的参数 1.3 linear_model.LinearRegression 1.4 案例 1.5 多元线性回归的模型评估指标 1.5.1 MSE均方误差&MAE绝对均值误...
    99+
    2023-09-27
    人工智能 python
  • pytorch怎样实现线性回归
    这篇文章给大家分享的是有关pytorch怎样实现线性回归的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下# 随机初始化一个二维数据集,使用朋友torch训练一个回归模型import ...
    99+
    2023-06-14
  • 使用pytorch实现线性回归
    本文实例为大家分享了pytorch实现线性回归的具体代码,供大家参考,具体内容如下 线性回归都是包括以下几个步骤:定义模型、选择损失函数、选择优化函数、 训练数据、测试 ...
    99+
    2022-11-12
  • pytorch实现线性回归的方法
    这篇文章主要介绍“pytorch实现线性回归的方法”,在日常操作中,相信很多人在pytorch实现线性回归的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pytorch实现线性回归的方法”的疑惑有所帮助!...
    99+
    2023-06-14
  • python多元线性回归怎么实现
    在Python中,可以使用`scikit-learn`库来实现多元线性回归。首先,需要导入所需的库和模块:```pythonfrom...
    99+
    2023-08-18
    python
  • pytorch实现多项式回归
    pytorch实现多项式回归,供大家参考,具体内容如下 一元线性回归模型虽然能拟合出一条直线,但精度依然欠佳,拟合的直线并不能穿过每个点,对于复杂的拟合任务需要多项式回归拟合,提高精...
    99+
    2022-11-12
  • PyTorch实现线性回归详细过程
    目录一、实现步骤1、准备数据2、设计模型3、构造损失函数和优化器4、训练过程5、结果展示二、参考文献一、实现步骤 1、准备数据 x_data = torch.tensor([[1.0...
    99+
    2022-11-13
  • 多元线性回归-python代码
    引言 求解多个自变量和一个因变量之间的线性关系 y=a1x1+a2x2+a3x3+b (y为因变量,x为自变量,a为权重,b为截距。) 数据类型: 1.读数据 '''y=a1x1+a2x2+a...
    99+
    2023-10-06
    python 线性回归
  • 线性回归与岭回归python代码实现
      在线性回归中我们要求的参数为: 详细的推导可以参见:http://blog.csdn.net/weiyongle1996/article/details/73727505 所以代码实现主要就是实现上式,python代码如下: i...
    99+
    2023-01-31
    线性 代码 python
  • R语言如何实现多元线性回归
    R小白几天的摸索 红色为输入,蓝色为输出 输入数据 先把数据用excel保存为csv格式放在”我的文档”文件夹 打开R软件,不用新建,直接写 回归计算 求三个平方和 置信区间...
    99+
    2022-11-11
  • pytorch实现逻辑回归
    本文实例为大家分享了pytorch实现逻辑回归的具体代码,供大家参考,具体内容如下 一、pytorch实现逻辑回归 逻辑回归是非常经典的分类算法,是用于分类任务,如垃圾分类任务,情感...
    99+
    2022-11-12
  • R语言多元线性回归是什么及如何实现
    这篇文章主要介绍“R语言多元线性回归是什么及如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“R语言多元线性回归是什么及如何实现”文章能帮助大家解决问题。一、模型简介一元线性回归是一个主要影响因...
    99+
    2023-07-02
  • pytorch如何实现多项式回归
    这篇文章主要为大家展示了“pytorch如何实现多项式回归”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“pytorch如何实现多项式回归”这篇文章吧。pytorch实现多项式回归,供大家参考,具...
    99+
    2023-06-14
  • python一元线性回归怎么实现
    在Python中,可以使用NumPy和Scikit-learn库来实现一元线性回归。以下是一元线性回归的实现步骤:1. 导入所需的库...
    99+
    2023-08-18
    python
  • 基于Python多元线性回归模型
    提示:基于Python的多元线性回归模型 文章目录 前言 一、读取数据 二、建立模型  三、预测新值  四、去截距模型 总结 前言 本文主要是基于多元回归线性模型,然后建立模型和分析,解决多元线性回归模型存在的问题...
    99+
    2023-10-24
    python pandas
  • rstudio多元线性回归怎么构建
    在RStudio中进行多元线性回归可以使用lm()函数来构建模型。以下是构建多元线性回归模型的步骤:1. 准备数据:将要用于回归的自...
    99+
    2023-08-18
    rstudio
  • 手动以及使用torch.nn实现logistic回归和softmax回归
    其他文章 手动以及使用torch.nn实现logistic回归和softmax回(当前文章)手动以及使用torch.nn实现前馈神经网络实验 文章目录 任务一、Pytorch基本操作考察1.1...
    99+
    2023-10-24
    回归 深度学习 pytorch python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作