使用pytorch实现线性回归

使用PyTorch实现线性回归

线性回归是一种常用的回归算法,它可以用于预测连续变量的值。在本文中,我们将介绍如何使用PyTorch实现线性回归,并提供两个示例说明。

示例1:使用自己生成的数据实现线性回归

以下是一个使用自己生成的数据实现线性回归的示例代码:

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt

# Generate data
np.random.seed(42)
X = np.random.rand(100, 1)
y = 2 * X + 0.5 + np.random.randn(100, 1) * 0.1

# Convert data to tensors
X = torch.from_numpy(X).float()
y = torch.from_numpy(y).float()

# Define linear regression model
class LinearRegression(nn.Module):
    def __init__(self):
        super(LinearRegression, self).__init__()
        self.linear = nn.Linear(1, 1)

    def forward(self, x):
        x = self.linear(x)
        return x

# Train linear regression model
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

for epoch in range(100):
    optimizer.zero_grad()
    y_pred = model(X)
    loss = criterion(y_pred, y)
    loss.backward()
    optimizer.step()

# Plot results
plt.scatter(X.numpy(), y.numpy())
plt.plot(X.numpy(), model(X).detach().numpy(), color='red')
plt.show()

在这个示例中,我们首先生成了一些随机数据,并将其转换为PyTorch张量。然后,我们定义了一个LinearRegression类来实现线性回归模型。在训练过程中,我们使用均方误差损失函数和随机梯度下降优化器来训练模型。在训练完成后,我们使用训练好的模型对数据进行预测,并将结果可视化。

示例2:使用房价数据集实现线性回归

以下是一个使用房价数据集实现线性回归的示例代码:

import torch
import torch.nn as nn
import torch.optim as optim
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Load Boston Housing dataset
boston = load_boston()
X = boston.data
y = boston.target

# Preprocess data
scaler = StandardScaler()
X = scaler.fit_transform(X)
y = (y - y.mean()) / y.std()

# Split data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Convert data to tensors
X_train = torch.from_numpy(X_train).float()
y_train = torch.from_numpy(y_train).float()
X_test = torch.from_numpy(X_test).float()
y_test = torch.from_numpy(y_test).float()

# Define linear regression model
class LinearRegression(nn.Module):
    def __init__(self):
        super(LinearRegression, self).__init__()
        self.linear = nn.Linear(13, 1)

    def forward(self, x):
        x = self.linear(x)
        return x

# Train linear regression model
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

for epoch in range(100):
    optimizer.zero_grad()
    y_pred = model(X_train)
    loss = criterion(y_pred, y_train.view(-1, 1))
    loss.backward()
    optimizer.step()

# Test linear regression model
y_pred = model(X_test)
mse = criterion(y_pred, y_test.view(-1, 1))
print('MSE:', mse.item())

在这个示例中,我们首先加载波士顿房价数据集,并对数据进行预处理。然后,我们将数据集分成训练集和测试集,并定义一个LinearRegression类来实现线性回归模型。在训练过程中,我们使用均方误差损失函数和随机梯度下降优化器来训练模型。在测试过程中,我们使用训练好的模型对测试集进行预测,并计算模型的均方误差。

总结

在本文中,我们介绍了如何使用PyTorch实现线性回归,并提供了两个示例说明。这些技术对于在深度学习中进行回归任务非常有用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用pytorch实现线性回归 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 计算pytorch标准化(Normalize)所需要数据集的均值和方差实例

    在PyTorch中,我们可以使用torchvision.transforms.Normalize函数来对数据进行标准化。该函数需要输入数据集的均值和方差,以便将数据标准化为均值为0,方差为1的形式。因此,我们需要计算数据集的均值和方差,以便使用Normalize函数对数据进行标准化。 以下是一个完整的攻略,包括两个示例说明。 示例1:计算单通道图像数据集的均…

    PyTorch 2023年5月15日
    00
  • pytorch提取神经网络模型层结构和参数初始化

    torch.nn.Module()类有一些重要属性,我们可用其下面几个属性来实现对神经网络层结构的提取: torch.nn.Module.children() torch.nn.Module.modules() torch.nn.Module.named_children() torch.nn.Module.named_moduless() 为方面说明,我们…

    2023年4月8日
    00
  • Pytorch下 label 的 one-hot 形式转换方法

    2020.10.1 发现最新的 pytorch 已经原生支持 one-hot 操作torch.nn.functional.one_hot()pytorch 官方文档链接 只需如下一行代码:label_one_hot = torch.nn.functional.one_hot(labels, self.num_classes).float().to(self.…

    PyTorch 2023年4月6日
    00
  • PyTorch DataLoader()使用

    DataLoader的作用:通常在训练时我们会将数据集分成若干小的、随机的batch,这个操作当然可以手动操作,但是PyTorch里面为我们提供了API让我们方便地从dataset中获得batch,DataLoader就是干这事儿的。先看官方文档的描述,包括了每个参数的定义:它的本质是一个可迭代对象,一般的操作是: 创建一个dataset对象 创建一个Dat…

    2023年4月6日
    00
  • pytorch Model Linear实现线性回归CUDA版本

    实验代码   import torch import torch.nn as nn #y = wx + b class MyModel(nn.Module): def __init__(self): super(MyModel,self).__init__() #自定义代码 # self.w = torch.rand([500,1],requires_gra…

    PyTorch 2023年4月8日
    00
  • 利用Pytorch实现获取特征图的方法详解

    利用PyTorch实现获取特征图的方法详解 在本文中,我们将介绍如何使用PyTorch获取卷积神经网络(CNN)中的特征图。我们将提供两个示例,一个是使用预训练模型,另一个是使用自定义模型。 示例1:使用预训练模型 以下是使用预训练模型获取特征图的示例代码: import torch import torchvision.models as models i…

    PyTorch 2023年5月16日
    00
  • tensorflow中Dense函数的具体使用

    在TensorFlow中,Dense函数是用于创建全连接层的函数。本文提供一个完整的攻略,以帮助您了解如何在TensorFlow中使用Dense函数。 步骤1:导入必要的模块 在使用Dense函数之前,您需要导入必要的模块。您可以按照以下步骤导入必要的模块: import tensorflow as tf from tensorflow.keras.laye…

    PyTorch 2023年5月15日
    00
  • 神经网络训练采用gpu设置的方式

    以下是关于“神经网络训练采用 GPU 设置的方式”的完整攻略,其中包含两个示例说明。 示例1:使用单个 GPU 进行训练 步骤1:导入必要库 在使用 GPU 进行训练之前,我们需要导入一些必要的库,包括torch。 import torch 步骤2:定义模型和数据 在这个示例中,我们使用随机生成的数据和模型来演示如何使用单个 GPU 进行训练。 # 定义随机…

    PyTorch 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部