Pytorch 搭建分类回归神经网络并用GPU进行加速的例子

PyTorch搭建分类回归神经网络并用GPU进行加速的例子

在本文中,我们将介绍如何使用PyTorch搭建分类回归神经网络,并使用GPU进行加速。本文将包含两个示例说明。

示例一:使用PyTorch搭建分类神经网络

我们可以使用PyTorch搭建分类神经网络。示例代码如下:

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

# 定义超参数
num_epochs = 5
batch_size = 4
learning_rate = 0.001

# 加载数据集
transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
                                          shuffle=True, num_workers=2)

testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
                                         shuffle=False, num_workers=2)

classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

# 定义模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 16 * 5 * 5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

net = Net()

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=learning_rate, momentum=0.9)

# 训练模型
for epoch in range(num_epochs):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        running_loss += loss.item()
        if i % 2000 == 1999:
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

print('Finished Training')

# 测试模型
correct = 0
total = 0
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = net(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print('Accuracy of the network on the 10000 test images: %d %%' % (
    100 * correct / total))

在上述代码中,我们首先加载了CIFAR10数据集,并定义了一个分类神经网络Net。然后,我们定义了损失函数和优化器,并使用训练集训练模型。最后,我们使用测试集测试模型的准确率。

示例二:使用PyTorch搭建回归神经网络

除了分类神经网络,我们还可以使用PyTorch搭建回归神经网络。示例代码如下:

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

# 创建数据集
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)

# 转换为张量
x_train = torch.from_numpy(x_train)
y_train = torch.from_numpy(y_train)

# 定义模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(1, 10)
        self.fc2 = nn.Linear(10, 1)

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

net = Net()

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

# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
    inputs = x_train
    targets = y_train

    # 前向传播
    outputs = net(inputs)
    loss = criterion(outputs, targets)

    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    if (epoch+1) % 100 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

# 可视化结果
predicted = net(x_train).detach().numpy()
plt.plot(x_train.numpy(), y_train.numpy(), 'ro', label='Original data')
plt.plot(x_train.numpy(), predicted, label='Fitted line')
plt.legend()
plt.show()

在上述代码中,我们首先创建了一个一维数据集x_trainy_train。然后,我们将数据集转换为张量,并定义了一个回归神经网络Net。接着,我们定义了损失函数和优化器,并使用训练集训练模型。最后,我们使用Matplotlib可视化了结果。

使用GPU进行加速

如果你的计算机支持GPU,你可以使用GPU进行加速。示例代码如下:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)

net.to(device)

inputs, labels = inputs.to(device), labels.to(device)

在上述代码中,我们首先判断计算机是否支持GPU。然后,我们将模型和数据移动到GPU上。这样,我们就可以使用GPU进行加速。

总结

本文介绍了如何使用PyTorch搭建分类回归神经网络,并使用GPU进行加速。我们可以使用PyTorch的nn.Module类定义模型,使用nn.CrossEntropyLoss()函数定义损失函数,使用optim.SGD()函数定义优化器,使用backward()函数进行反向传播,使用step()函数更新参数。如果你的计算机支持GPU,你可以使用GPU进行加速。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytorch 搭建分类回归神经网络并用GPU进行加速的例子 - Python技术站

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

相关文章

  • pytorch中permute()函数用法补充说明(矩阵维度变化过程)

    PyTorch中permute()函数用法补充说明 在PyTorch中,permute()函数用于对张量的维度进行重新排列。本文将详细介绍permute()函数的用法,并提供两个示例说明。 permute()函数的用法 permute()函数的语法如下: torch.Tensor.permute(*dims) 其中,*dims表示一个可变参数,用于指定新的维…

    PyTorch 2023年5月15日
    00
  • Pytorch 使用Google Colab训练神经网络深度学习

    Pytorch 使用Google Colab训练神经网络深度学习 Google Colab是一种免费的云端计算平台,可以让用户在浏览器中运行Python代码。本文将介绍如何使用Google Colab训练神经网络深度学习模型,以及如何在Google Colab中使用PyTorch。 步骤1:连接到Google Colab 首先,您需要连接到Google Co…

    PyTorch 2023年5月15日
    00
  • pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    一、先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。 1.squeeze(a)就是将a中所有为1的维度删掉。不为1的维度没有影响。 2.a.squeeze(N) 就是去掉a中指定的维数为一的维度。   还有一种形式就是b=…

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

    用pytorch1.0搭建简单的神经网络:进行多分类分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot as plt # 假数据 # make fake data n_data = torch.ones(100, 2) x0 = torch.nor…

    PyTorch 2023年4月6日
    00
  • Pytorch怎么安装pip、conda、Docker容器

    这篇文章主要介绍“Pytorch怎么安装pip、conda、Docker容器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Pytorch怎么安装pip、conda、Docker容器”文章能帮助大家解决问题。 一、Pyorch介绍 PyTorch是一个开源的深度学习框架,用于计算机视觉和自然语言处理等应用程序的开发。它…

    PyTorch 2023年4月7日
    00
  • PyTorch CUDA环境配置及安装的步骤(图文教程)

    PyTorch CUDA环境配置及安装的步骤(图文教程) PyTorch 是一个广泛使用的深度学习框架,支持 GPU 加速。在使用 PyTorch 进行深度学习模型训练时,我们通常需要配置 CUDA 环境。本文将详细讲解 PyTorch CUDA 环境配置及安装的步骤,并提供两个示例说明。 1. 安装 CUDA 首先,我们需要安装 CUDA。在安装 CUDA…

    PyTorch 2023年5月16日
    00
  • Pytorch tutorial 之Datar Loading and Processing (2)

    上文介绍了数据读取、数据转换、批量处理等等。了解到在PyTorch中,数据加载主要有两种方式: 1. 自定义的数据集对象。数据集对象被抽象为Dataset类,实现自定义的数据集需要继承Dataset。且须实现__len__()和__getitem__()两个方法。 2. 利用torchvision包。torchvision已经预先实现了常用的Dataset,…

    PyTorch 2023年4月8日
    00
  • PyTorch 之 强大的 hub 模块和搭建神经网络进行气温预测

    PyTorch之强大的hub模块和搭建神经网络进行气温预测 在PyTorch中,我们可以使用hub模块来加载预训练的模型,也可以使用它来分享和重用模型组件。在本文中,我们将介绍如何使用hub模块来加载预训练的模型,并使用它来搭建神经网络进行气温预测,并提供两个示例说明。 示例1:使用hub模块加载预训练的模型 以下是一个使用hub模块加载预训练的模型的示例代…

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