PyTorch: Softmax多分类实战操作

以下是PyTorch: Softmax多分类实战操作的完整攻略,包含两个示例说明。

环境要求

在开始实战操作之前,需要确保您的系统满足以下要求:

  • Python 3.6或更高版本
  • PyTorch 1.0或更高版本
  • torchvision 0.2.1或更高版本

示例1:使用Softmax多分类模型对MNIST数据集进行分类

在这个示例中,我们将使用Softmax多分类模型对MNIST数据集进行分类。

首先,我们需要下载MNIST数据集。您可以使用以下代码来下载MNIST数据集:

import torchvision.datasets as dsets
import torchvision.transforms as transforms

train_dataset = dsets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_dataset = dsets.MNIST(root='./data', train=False, transform=transforms.ToTensor())

然后,我们可以使用以下代码来定义一个Softmax多分类模型:

import torch.nn as nn
import torch.nn.functional as F

class SoftmaxClassifier(nn.Module):
    def __init__(self):
        super(SoftmaxClassifier, self).__init__()
        self.linear = nn.Linear(784, 10)

    def forward(self, x):
        x = x.view(-1, 784)
        x = self.linear(x)
        return F.softmax(x, dim=1)

接下来,我们可以使用以下代码来训练Softmax多分类模型:

import torch.optim as optim

model = SoftmaxClassifier()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=100, shuffle=True)
test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=100, shuffle=False)

num_epochs = 10
for epoch in range(num_epochs):
    for i, (images, labels) in enumerate(train_loader):
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

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

    correct = 0
    total = 0
    for images, labels in test_loader:
        outputs = model(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

    print('Accuracy of the model on the 10000 test images: {} %'.format(100 * correct / total))

在这个示例中,我们首先定义了一个Softmax多分类模型。然后,我们使用该模型对MNIST数据集进行分类,并在测试集上计算模型的准确率。

示例2:使用Softmax多分类模型对CIFAR-10数据集进行分类

在这个示例中,我们将使用Softmax多分类模型对CIFAR-10数据集进行分类。

首先,我们需要下载CIFAR-10数据集。您可以使用以下代码来下载CIFAR-10数据集:

import torchvision.datasets as dsets
import torchvision.transforms as transforms

train_dataset = dsets.CIFAR10(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_dataset = dsets.CIFAR10(root='./data', train=False, transform=transforms.ToTensor())

然后,我们可以使用以下代码来定义一个Softmax多分类模型:

import torch.nn as nn
import torch.nn.functional as F

class SoftmaxClassifier(nn.Module):
    def __init__(self):
        super(SoftmaxClassifier, 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 F.softmax(x, dim=1)

接下来,我们可以使用以下代码来训练Softmax多分类模型:

import torch.optim as optim

model = SoftmaxClassifier()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=100, shuffle=True)
test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=100, shuffle=False)

num_epochs = 10
for epoch in range(num_epochs):
    for i, (images, labels) in enumerate(train_loader):
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

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

    correct = 0
    total = 0
    for images, labels in test_loader:
        outputs = model(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

    print('Accuracy of the model on the 10000 test images: {} %'.format(100 * correct / total))

在这个示例中,我们首先定义了一个Softmax多分类模型。然后,我们使用该模型对CIFAR-10数据集进行分类,并在测试集上计算模型的准确率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyTorch: Softmax多分类实战操作 - Python技术站

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

相关文章

  • Pytorch快速入门及在线体验

    本文搭配了Pytorch在线环境,可以直接在线体验。 Pytorch是Facebook 的 AI 研究团队发布了一个基于 Python的科学计算包,旨在服务两类场合: 1.替代numpy发挥GPU潜能 ;2. 一个提供了高度灵活性和效率的深度学习实验性平台。 1.Pytorch简介 Pytorch是Facebook 的 AI 研究团队发布了一个基于 Pyth…

    2023年4月8日
    00
  • pytorch 实现冻结部分参数训练另一部分

    PyTorch实现冻结部分参数训练另一部分 在本文中,我们将介绍如何使用PyTorch实现冻结部分参数并训练另一部分。我们将提供两个示例,一个是冻结卷积层参数,另一个是冻结全连接层参数。 示例1:冻结卷积层参数 以下是冻结卷积层参数并训练全连接层的示例代码: import torch import torch.nn as nn import torchvis…

    PyTorch 2023年5月16日
    00
  • pytorch-Flatten操作

    1 class Flatten(nn.Module): 2 def __init__(self): 3 super(Flatten,self).__init__() 4 5 def forward(self,input): 6 shape = torch.prod(torch.tensor(x.shape[1:])).item() 7 # -1 把第一个维度…

    PyTorch 2023年4月8日
    00
  • PyTorch如何构建深度学习模型?

    简介 每过一段时间,就会有一个深度学习库被开发,这些深度学习库往往可以改变深度学习领域的景观。Pytorch就是这样一个库。 在过去的一段时间里,我研究了Pytorch,我惊叹于它的操作简易。Pytorch是我迄今为止所使用的深度学习库中最灵活的,最轻松的。 在本文中,我们将以实践的方式来探索Pytorch,包括基础知识与案例研究。我们会使用numpy和Py…

    2023年4月8日
    00
  • Pytorch释放显存占用方式

    下面是关于Pytorch如何释放显存占用的完整攻略,包含两条示例说明。 1. 使用with torch.no_grad()释放显存 在Pytorch中,通过with语句使用torch.no_grad()上下文管理器可以释放显存,这个操作对于训练中不需要梯度计算的代码非常有用。 代码示例: import torch # 创建一个3000 * 3000的矩阵 t…

    PyTorch 2023年5月17日
    00
  • pytorch分类模型绘制混淆矩阵以及可视化详解

    以下是关于“pytorch分类模型绘制混淆矩阵以及可视化详解”的完整攻略,其中包含两个示例说明。 示例1:绘制混淆矩阵 步骤1:导入必要的库 在绘制混淆矩阵之前,我们需要导入一些必要的库,包括numpy、matplotlib和sklearn。 import numpy as np import matplotlib.pyplot as plt from sk…

    PyTorch 2023年5月16日
    00
  • PyTorch Geometric Temporal 介绍 —— 数据结构和RGCN的概念

    Introduction PyTorch Geometric Temporal is a temporal graph neural network extension library for PyTorch Geometric. PyTorch Geometric Temporal 是基于PyTorch Geometric的对时间序列图数据的扩展。 Dat…

    PyTorch 2023年4月8日
    00
  • pytorch中Parameter函数用法示例

    PyTorch中Parameter函数用法示例 在PyTorch中,Parameter函数是一个特殊的张量,它被自动注册为模型的可训练参数。本文将介绍Parameter函数的用法,并演示两个示例。 示例一:使用Parameter函数定义可训练参数 import torch import torch.nn as nn class MyModel(nn.Modu…

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