使用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:入门与实践》的Loss函数构建代码运行问题

    在学习陈云的教程《深度学习框架PyTorch:入门与实践》的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.arange(0,10)) criterion = nn.MSELoss() loss = criterion(output, target) loss 运行结果: Runt…

    2023年4月8日
    00
  • Pytorch tutorial 之Transfer Learning

    引自官方:  Transfer Learning tutorial Ng在Deeplearning.ai中讲过迁移学习适用于任务A、B有相同输入、任务B比任务A有更少的数据、A任务的低级特征有助于任务B。对于迁移学习,经验规则是如果任务B的数据很小,那可能只需训练最后一层的权重。若有足够多的数据则可以重新训练网络中的所有层。如果重新训练网络中的所有参数,这个…

    2023年4月8日
    00
  • Pytorch从一个输入目录中加载所有的PNG图像,并将它们存储在张量中

    1 import os 2 import imageio 3 from imageio import imread 4 import torch 5 6 # batch_size = 3 7 # batch = torch.zeros(batch_size, 3, 256, 256, dtype=torch.uint8) 8 # batch.shape #t…

    PyTorch 2023年4月7日
    00
  • 用pytorch1.0搭建简单的神经网络:进行回归分析

    搭建简单的神经网络:进行回归分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot as plt # 建立数据集 x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) # x data (tens…

    PyTorch 2023年4月6日
    00
  • Pytorch优化过程展示:tensorboard

    训练模型过程中,经常需要追踪一些性能指标的变化情况,以便了解模型的实时动态,例如:回归任务中的MSE、分类任务中的Accuracy、生成对抗网络中的图片、网络模型结构可视化…… 除了追踪外,我们还希望能够将这些指标以动态图表的形式可视化显示出来。 TensorFlow的附加工具Tensorboard就完美的提供了这些功能。不过现在经过Pytorch团队的努力…

    2023年4月6日
    00
  • Pytorch_第二篇_Pytorch tensors 张量基础用法和常用操作

    Introduce Pytorch的Tensors可以理解成Numpy中的数组ndarrays(0维张量为标量,一维张量为向量,二维向量为矩阵,三维以上张量统称为多维张量),但是Tensors 支持GPU并行计算,这是其最大的一个优点。 本文首先介绍tensor的基础用法,主要tensor的创建方式以及tensor的常用操作。 以下均为初学者笔记。 tens…

    PyTorch 2023年4月8日
    00
  • PyTorch一小时掌握之神经网络气温预测篇

    PyTorch一小时掌握之神经网络气温预测篇 PyTorch是一种常用的深度学习框架,它提供了丰富的工具和函数,可以帮助我们快速构建和训练深度学习模型。本文将详细讲解如何使用PyTorch构建神经网络模型,并使用该模型进行气温预测。本文将分为以下几个部分: 数据准备:我们将使用气温数据集来训练和测试神经网络模型。 模型构建:我们将使用PyTorch构建一个简…

    PyTorch 2023年5月16日
    00
  • pytorch版本PSEnet训练并部署方式

    PyTorch版本PSEnet训练并部署方式的完整攻略 PSEnet是一种用于文本检测的神经网络模型,它在文本检测任务中表现出色。本文将提供一个完整的攻略,介绍如何使用PyTorch训练PSEnet模型,并提供两个示例,分别是使用PSEnet进行文本检测和使用PSEnet进行文本识别。 训练PSEnet模型 以下是训练PSEnet模型的步骤: 准备数据集:首…

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