P2周:CIFAR10彩色图片识别
- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊
环境准备:
Python:3.12
编译器:jupyter notebook
深度学习环境:Pytorch(GPU)
一、前期设置
1、设置GPU
代码实现:
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import torchvision
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")#使用CPU
device
我的显卡是:Nvdia 4070Ti super
代码输出结果:
device(type=‘cuda’)
2、导入数据
使用torchvision中的dataset下载CIFAR10数据采集,并划分好训练集和测试集。并使用dataloader加载数据,并设置好基本的batch_size。
torchvision
是 PyTorch 深度学习框架的官方视觉工具包,专门为计算机视觉任务设计。它提供了一系列功能,主要包括:
数据集加载器(torchvision.datasets)
:支持常用的计算机视觉数据集,如 ImageNet、CIFAR10、MNIST等,方便用户下载和加载数据。预训练模型
(torchvision.models)
:包含在大规模数据集上训练的模型,如ResNet、AlexNet、VGG、Inception 等,用户可以直接使用这些模型进行迁移学习或微调。数据转换和处理
(torchvision.transforms)
:提供了一系列对图像进行预处理和数据增强的操作,如裁剪、缩放、翻转、归一化等,简化了数据预处理流程。实用工具
(torchvision.utils)
:包括一些辅助函数,如将一批图像张量保存为图像网格,方便可视化。
代码实现:
train_ds = torchvision.datasets.CIFAR10('.data',
train=True,
transform=torchvision.transforms.ToTensor(), # 将数据类型转化为Tensor
download=True)
test_ds = torchvision.datasets.CIFAR10('.data',
train=False,
transform=torchvision.transforms.ToTensor(), # 将数据类型转化为Tensor
download=True)
代码输出:
接下来设置batch_size。
代码实现:
batch_size = 32
train_dl = torch.utils.data.DataLoader(train_ds,
batch_size=batch_size,
shuffle=True)#随机打乱
test_dl = torch.utils.data.DataLoader(test_ds,
batch_size=batch_size)#测试集不需要打乱
# 取一个批次查看数据格式
# 数据的shape为:[batch_size, channel, height, weight]
# 其中batch_size为自己设定,channel,height和weight分别是图片的通道数,高度和宽度。
imgs, labels = next(iter(train_dl))
imgs.shape
其中,iter()
函数用于创建一个可迭代对象的迭代器,他的作用是将train_dl转换为一个迭代器,使其可以使用next()
函数逐个获取批次数据。而next()函数用于从迭代器中获取下一项,在这里会从train_dl的迭代器中获取下一批的数据。
3、数据可视化
和上周一样,我们同样先对一组数据进行可视化。
代码实现:
# 指定图片大小,图像大小为20宽、5高的绘图(单位为英寸inch)
plt.figure(figsize=(20, 5))
for i, imgs in enumerate(imgs[:20])