Pytorch代码入门学习之分类任务(二):定义数据集

一、导包

复制代码
import torch
import torchvision
import torchvision.transforms as transforms

二、下载数据集

2.1 代码展示

python 复制代码
# 定义数据加载进来后的初始化操作:
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)
testset = torchvision.datasets.CIFAR10(root='./data',train=False,download=True,transform=transform)
trainloader = torch.utils.data.DataLoader(trainset,batch_size=4,shuffle=True,num_workers=0)
testloader = torch.utils.data.DataLoader(testset,batch_size=4,shuffle=False,num_workers=0)

2.2 数据集介绍与下载方式

(1)数据集介绍:

CIFAR10数据集共60000个样本,其中有50000个训练样本和10000个测试样本。每个样本都是一张32*32像素的RGB图像(彩色图像),每个图像分为3个通道(R通道、G通道与B通道)。

CIFAR10数据集用来进行监督学习训练,每个样本包含一个标签值,其中有10类物体,标签值按照0~9来区分,分别是飞机( airplane )、汽车( automobile )、鸟( bird )、猫( cat )、鹿( deer )、狗( dog )、青蛙( frog )、马( horse )、船( ship )和卡车( truck )。

CIFAR10数据集的内容,如下图所示。

官网介绍链接:CIFAR-10 and CIFAR-100 datasets (toronto.edu)

(2)下载方式:

①下载文件:下载地址:https://pan.baidu.com/s/1Nh28RyfwPNNfe_sS8NBNUA

提取码:1h4x

②将下载好的文件重命名为cifar-10-batches-py.tar.gz

③将文件保存至相应地址下即可

2.3 transforms.Compose

**transforms.Compose:**相当于将所有需要的操作进行打包;

**transforms.ToTensor:**完成张量转换,pytorch处理的都是tensor数据,需要将读入的图片转换为tensor,其中tensor比普通图片的三通道多了一个通道---batch;

**transforms.Normalize:**归一化操作,对这一批次的数据进行归一,可以加速网络的收敛、放置梯度消失与梯度爆炸。

2.4 Dataset

Dataset是指定义好数据的格式和数据变换的形式,完成一些初始化的变化,然后送给网络(相当于将数据读入进去)。

torchvision.datasets.CIFAR10(调用数据集):第一个参数为数据集加载的地址、第二个参数为是否是训练数据或测试数据(训练数据为True,测试数据为False)、第三个为download-指该数据集是否本地下载,最后一个参数为要做哪些变化(transform是指数据变换格式,torchvision会将我们需要的数据进行格式变换)。

2.4 Dataloader

Dataloader:负责用iterative迭代的方式不断读入批次数据,一批次一批次将数据进行打包,送入网络进行训练、学习、测试。

**torch.utils.data.DataLoader:**第一个参数为数据,第二个参数为batch_size(代表Dataloader一次从这么多数据中拿多少个数据走),第三个参数为是否将数据打乱(训练的时候将数据打乱会让数据变得复杂,测试的时候不需要变得复杂),第四个参数为需要几线程进行读取数据(对于windows,默认为0就可以)

三、定义元组

定义元组进行类别名的中文转换:

python 复制代码
classes = ('airplane','automobile','bird','car','deer','dog','frog','horse','ship','truck')

四、定义显示函数与运行数据加载器

4.1 代码展示

python 复制代码
import matplotlib.pyplot as plt
import numpy as np  # 用这个包中的根据将tensor数据转换成矩阵数据
 
def imshow(img):
    img = img / 2 + 0.5
    # tensor数据转换为numpy
    npimg = img.numpy()
    # 使用transpose进行数据转换-通道转换
    plt.imshow(np.transpose(npimg,(1,2,0)))
    plt.show()
 
dataiter = iter(trainloader)
images,labels = dataiter.next()
 
imshow(torchvision.utils.make_grid(images))
 
print(labels)
print(labels[0],classes[labels[0]])
print(' '.join(classes[labels[j]] for j in range(4)))

4.2 定义显示函数

tensor[batch,channel,H,W],而正常显示图片的顺序为H、W、channel,因此需要定义显示函数,通过反归一化才能变成正常的图片去显示。

4.3 定义迭代器

iter(trainloader) : 定义迭代器,读一次迭代的数据(batch_size=4,所以迭代器一次会读取四张图片);

**torchvision.utils.make_grid:**将多张图片拼接为一张图片。

参考:003 第一个分类任务1_哔哩哔哩_bilibili

相关推荐
m0_6501082420 分钟前
【论文精读】迈向更好的指标:从T2VScore看文本到视频生成的新评测范式
人工智能·论文精读·评估指标·文本到视频生成·t2vscore·tvge数据集·视频质量评估
十子木27 分钟前
C++ 类似pytorch的库,工具包,或者机器学习的生态
c++·pytorch·机器学习
我命由我1234533 分钟前
Photoshop - Photoshop 工具栏(22)单行选框工具
学习·ui·职场和发展·求职招聘·职场发展·学习方法·photoshop
算家计算36 分钟前
一张白纸,无限画布:SkyReels刚刚重新定义了AI视频创作
人工智能·aigc·资讯
Kandiy1802539818738 分钟前
PHY6252国产蓝牙低成本透传芯片BLE5.2智能灯控智能家居
人工智能·物联网·智能家居·射频工程
机器之心1 小时前
字节Seed团队发布循环语言模型Ouro,在预训练阶段直接「思考」,Bengio组参与
人工智能·openai
新智元1 小时前
AI 教父 Hinton 末日警告!你必须失业,AI 万亿泡沫豪赌才能「赢」
人工智能·openai
新智元1 小时前
CUDA 再见了!寒武纪亮出软件全家桶
人工智能·openai
User_芊芊君子1 小时前
【成长纪实】我的鸿蒙成长之路:从“小白”到独立开发,带你走进鸿蒙的世界
学习·华为·harmonyos·鸿蒙开发
oe10192 小时前
好文与笔记分享 A Survey of Context Engineering for Large Language Models(下)
人工智能·笔记·语言模型·agent