ciaodvd数据集的简单介绍_简单的使用PyTorch和Fashion MNIST数据集进行深度学习图像分类...

概述

本文的目的是为那些想要使用PyTorch和Fashion MNIST进行简单深度学习图像分类网络的人提供示例参考代码。

在本文中,我们将演示深度学习图像分类网络的所有工作部分,包括加载数据,定义网络,优化GPU上的权重以及评估性能。

整理Fashion MNIST数据集

Fashion MNIST是一个包含70,000个灰度图像和10个类的数据集。

75c0467df7ab2ee17edc43d3225d0a25.png

1.检查GPU是否可用

import torchprint(torch.cuda.is_available())device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")print(device)
ded4cecfff0baf33f5512d5afd24da98.png

2.下载并加载Fashion MNIST数据集

import torchfrom torchvision import datasets, transformsimport helper# Instructions from here:# https://www.kaggle.com/ishvindersethi22/fashion-mnist-using-pytorch/data# Define a transform to normalize the datatransform = transforms.Compose([transforms.ToTensor(), transforms.Normalize([0.], [0.5])])# Download and load the training datatrainset = datasets.FashionMNIST('~/.pytorch/F_MNIST_data/', download=True, train=True, transform=transform)trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)# Download and load the test datatestset = datasets.FashionMNIST('~/.pytorch/F_MNIST_data/', download=True, train=False, transform=transform)testloader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=True)
74e5ccdc00a4b93b22198c741cab9646.png

3.显示样本图像

import matplotlib.pyplot as pltimport torchvisionimport numpy as npdef imshow(img): img = img / 2 + 0. # unnormalize img = img.squeeze() plt.imshow(img, cmap='gray') images, label = next(iter(trainloader))imshow(images[0, :])
dfa65efa5b5e7b0ab1bd980e9f97600c.png

4.定义和训练网络

from collections import OrderedDictfrom torch import optim, nnhidden_units = [4, 8, 16]output_units = 10class Flatten(nn.Module): def forward(self, input): return input.view(input.size(0), -1)model_d = nn.Sequential(OrderedDict([ ('conv1', nn.Conv2d(1, hidden_units[0], 3, stride=2, padding=1)), ('Relu1', nn.ReLU()), ('conv2', nn.Conv2d(hidden_units[0], hidden_units[1], 3, stride=2, padding=1)), ('Relu2', nn.ReLU()), ('conv3', nn.Conv2d(hidden_units[1], hidden_units[2], 3, stride=2, padding=1)), ('Relu3', nn.ReLU()), ('conv4', nn.Conv2d(hidden_units[2], output_units, 4, stride=4, padding=0)), ('log_softmax', nn.LogSoftmax(dim = 1))]))model_d.to(device)optimizer_d = optim.Adam(model_d.parameters(), lr = 0.01)criterion = nn.NLLLoss()epochs = 10for i in range(epochs): running_classification_loss = 0 running_cycle_consistent_loss = 0 running_loss = 0 for images, labels in trainloader: images, labels = images.to(device), labels.to(device) optimizer_d.zero_grad()  # Run classification model predicted_labels = model_d(images) classification_loss = criterion(Flatten()(predicted_labels), labels)  # Optimize classification weights classification_loss.backward() optimizer_d.step()  running_classification_loss += classification_loss.item() running_loss = running_classification_loss else: print(f"{i} Training loss: {running_loss/len(trainloader)}")
18cff90c3e84bc244aaedb4c1a1b1e4a.png

5.评估网络

total_correct = 0total_num = 0for images, labels in testloader: images, labels = images.to(device), labels.to(device)  ps = Flatten()(torch.exp(model_d(images))) predictions = ps.topk(1, 1, True, True)[1].t() correct = predictions.eq(labels.view(1, -1))  total_correct += correct.sum().cpu().numpy() total_num += images.shape[0] print('Accuracy:', total_correct / float(total_num))print('Correct Label:', labels[0].item())print('Predicted Label:', predictions[0, 0].item())index = 0imshow(images[index, :].cpu())
2feb520566fb2338daec7c165211defa.png

小贴士

本文演示了深度学习图像分类网络的所有工作部分,我们可以使用最基本的人工智能应用来进行简单的学习。

  1. 我们加载了Fashion MNIST数据集
  2. 定义一个简单的深度卷积网络
  3. 我们使用GPU上的Adam优化器优化网络权重
  4. 我们评估网络并达到约85%的准确度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值