本文通过记录在pytorch中训练CIFAR-10数据集的一些过程,实现一个基本的数据集的分类,并在此过程中加强对图片、张量、CNN网络的理解,并尝试去总结一些训练技巧,记录一个新手对数据及网络的理解。
CIFAR—10数据集
CIFAR-10数据集包含10个类别的60000个32x32彩色图像,每个类别6000个图像。 有50000张训练图像和10000张测试图像。数据集地址如下:
示例如下:
接下来我们要做的事情便是利用各种CNN的网络模型,在训练集上训练我们的模型,然后在测试集上测试模型的泛化能力,然后不断调节各种超参数及网络模型的细节,已到达在测试集上有更高的分类准确率的目的。
代码实现
代码实现如下:
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.datasets as datasets
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import io
import sys
import os
#超参数定义
EPOCH = 100
BATCH_SIZE = 64
LR = 0.001
#数据集加载
#对训练集及测试集数据的不同处理组合
transform_train = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.RandomGrayscale(),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
transform_test = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5</