基于Pytorch的神经网络之Regression的实现

yizhihongxing

基于PyTorch的神经网络之Regression的实现

在本文中,我们将介绍如何使用PyTorch实现一个简单的回归神经网络。我们将使用一个人工数据集来训练模型,并使用测试集来评估模型的性能。

数据集

我们将使用一个简单的人工数据集来训练模型。数据集包含两个特征和一个目标变量。我们将使用前两个特征来预测目标变量。示例代码如下:

import torch
from torch.utils.data import Dataset

class MyDataset(Dataset):
    def __init__(self, data, targets):
        self.data = data
        self.targets = targets

    def __getitem__(self, index):
        x = self.data[index]
        y = self.targets[index]
        return x, y

    def __len__(self):
        return len(self.data)

# 创建数据集
data = torch.randn(100, 2)
targets = 2 * data[:, 0] - 3 * data[:, 1] + 1
dataset = MyDataset(data, targets)

# 划分训练集和测试集
train_size = int(0.8 * len(dataset))
test_size = len(dataset) - train_size
train_dataset, test_dataset = torch.utils.data.random_split(dataset, [train_size, test_size])

在上述代码中,我们创建了一个人工数据集MyDataset,它包含两个特征和一个目标变量。我们使用前两个特征来预测目标变量。然后,我们将数据集划分为训练集和测试集。

模型

我们将使用一个简单的全连接神经网络来预测目标变量。该模型包含两个输入特征和一个输出变量。示例代码如下:

import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(2, 1)

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

# 创建模型
model = Net()

在上述代码中,我们定义了一个简单的全连接神经网络Net,它包含一个输入层和一个输出层。输入层有两个神经元,输出层有一个神经元。然后,我们创建了一个模型实例model

训练模型

我们将使用均方误差(MSE)作为损失函数,使用随机梯度下降(SGD)作为优化器来训练模型。示例代码如下:

import torch.optim as optim

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(100):
    running_loss = 0.0
    for i, data in enumerate(train_dataset, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    print('Epoch %d loss: %.3f' % (epoch + 1, running_loss / len(train_dataset)))

在上述代码中,我们定义了损失函数criterion和优化器optimizer。然后,我们使用训练集训练模型。在每个epoch中,我们遍历训练集,并计算损失函数和梯度。然后,我们使用优化器更新模型参数。

评估模型

我们将使用测试集来评估模型的性能。我们将计算模型的均方误差(MSE)和R平方值(R2)。示例代码如下:

import numpy as np

# 评估模型
with torch.no_grad():
    predicted = model(test_dataset[:][0])
    mse = criterion(predicted, test_dataset[:][1])
    y_true = test_dataset[:][1].numpy()
    y_pred = predicted.numpy().flatten()
    r2 = 1 - np.sum((y_true - y_pred) ** 2) / np.sum((y_true - np.mean(y_true)) ** 2)
    print('MSE: %.3f' % mse)
    print('R2: %.3f' % r2)

在上述代码中,我们使用测试集评估模型的性能。我们计算模型的均方误差(MSE)和R平方值(R2)。MSE越小,模型的性能越好。R2越接近1,模型的性能越好。

总结

在本文中,我们介绍了如何使用PyTorch实现一个简单的回归神经网络。我们使用一个人工数据集来训练模型,并使用测试集来评估模型的性能。我们定义了一个全连接神经网络,使用均方误差(MSE)作为损失函数,使用随机梯度下降(SGD)作为优化器来训练模型。最后,我们计算了模型的均方误差(MSE)和R平方值(R2)来评估模型的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Pytorch的神经网络之Regression的实现 - Python技术站

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

相关文章

  • Pytorch使用MNIST数据集实现基础GAN和DCGAN详解

    GAN(Generative Adversarial Networks)是一种生成模型,它由两个神经网络组成:生成器和判别器。生成器负责生成假数据,判别器负责区分真假数据。GAN的训练过程是一个博弈过程,生成器和判别器相互竞争,最终生成器可以生成与真实数据相似的假数据。 DCGAN(Deep Convolutional GAN)是GAN的一种改进,它使用卷积…

    PyTorch 2023年5月15日
    00
  • jupyter notebook 调用环境中的Keras或者pytorch教程

    Jupyter Notebook是一个非常流行的交互式编程环境,可以用于数据分析、机器学习等领域。在使用Jupyter Notebook时,我们经常需要调用环境中的Keras或者PyTorch等深度学习框架。本文将提供一个详细的攻略,介绍如何在Jupyter Notebook中调用环境中的Keras或者PyTorch,并提供两个示例说明。 1. 安装Kera…

    PyTorch 2023年5月15日
    00
  • 基于pytorch框架的yolov5训练与pycharm远程连接服务器

    yolov5 pytorch工程准备与环境部署 yolov5训练数据准备 yolov5训练 pycharm远程连接 pycharm解释器配置 测试 1.  yolov5 pytorch工程准备与环境部署 (1)下载yolov5工程pytorch版本源码 https://github.com/ultralytics/yolov5 (2)环境部署 用anacon…

    2023年4月8日
    00
  • 神经网络学习–PyTorch学习06 迁移VGG16

        因为我们从头训练一个网络模型花费的时间太长,所以使用迁移学习,也就是将已经训练好的模型进行微调和二次训练,来更快的得到更好的结果。 import torch import torchvision from torchvision import datasets, models, transforms import os from torch.auto…

    PyTorch 2023年4月8日
    00
  • 闻其声而知雅意,基于Pytorch(mps/cpu/cuda)的人工智能AI本地语音识别库Whisper(Python3.10)

    前文回溯,之前一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),利用AI技术将文本合成语音,现在反过来,利用开源库Whisper再将语音转回文字,所谓闻其声而知雅意。 Whisper 是一个开源的语音识别库,它是由Facebook AI Research (FAIR)开发的,支持多种语言的语音识别…

    PyTorch 2023年4月6日
    00
  • Pytorch如何约束和限制权重/偏执的范围

    方法一: 首先编写模型结构: class Model(nn.Module): def __init__(self): super(Model,self).__init__() self.l1=nn.Linear(100,50) self.l2=nn.Linear(50,10) self.l3=nn.Linear(10,1) self.sig=nn.Sigmo…

    PyTorch 2023年4月8日
    00
  • 加快pytorch训练速度

    num_workers num_worker=0表示只用主进程读取数据, num_worker=4/8表明使用额外的4/8子进程读取数据 一般来说,增大num_worker可以增加GPU的利用率,从而加快训练的速度。 但是有时候即使增大num_worker也无法提高GPU利用率,这是因为训练的瓶颈在IO 多个小文件->单个大文件 使用hdf5文件:缺点…

    PyTorch 2023年4月8日
    00
  • pytorch进行mnist识别实战

    mnist实战 开始使用简单的全连接层进行mnist手写数字的识别,识别率最高能到95%,而使用两层卷积后再全连接,识别率能达到99% 全连接: import torch from torch import nn from torch.nn import functional as F from torch import optim import torch…

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