图像识别技术与应用(十一)
trainloader是之前定义的数据加载器,用于加载训练数据。本节课回顾了上周所讲过的图像分类问题,理解到图像是可以有三种分类:通用的多类别图像分类,子类细粒度图像分类,实例级图像分类;transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)):对图像进行归一化处理,有三个值是因为有三个通道-RGB)(transforms.ToTensor():
本节课回顾了上周所讲过的图像分类问题,理解到图像是可以有三种分类:通用的多类别图像分类,子类细粒度图像分类,实例级图像分类;回顾了混淆矩阵、评估指标、P-R曲线、ROC曲线等。
本节课讲述了卷积神经网络实现cifar10多分类项目,讲述了前期代码的含义以及使用方法,如何调用所适合的库。

该实验项目是分了10类,有多个训练图像和测试图像。

首先导入torch三个必要的库
其次是定义了一个图像预处理的操作序列
(transforms.ToTensor():将图像转换为Tensor格式,通常会将图像的像素值从[0, 255]的范围转换为[0, 1]的范围
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)):对图像进行归一化处理,有三个值是因为有三个通道-RGB)
接下来这行代码加载CIFAR-10数据集的训练集部分。torchvision.datasets.CIFAR10类用于加载CIFAR-10数据集。
root:指定数据集的存储路径
train=True:表示加载的是训练集数据。
download=False:表示如果数据集已经存在,则不重新下载。
transform=transform:对加载的图像应用之前定义的预处理操作。
这行代码创建了一个数据加载器trainloader,用于按批次加载训练数据。
torch.utils.data.DataLoader类用于创建数据加载器。
trainset:指定要加载的数据集(即前面定义的trainset)。
batch_size=4:表示每个批次包含4个样本。
shuffle=True:表示在每个 epoch 开始时打乱数据顺序,以增加训练的随机性。
num_workers=2:表示使用2个进程来加载数据,提高数据加载的效率。
最后定义了一个class类属性。(里面有10个)

首先导入matplotlib库的pyplot模块,取名为plt(matplotlib是一个用于绘制图表和可视化数据的常用库);导入numpy库,取名为np; %matplotlib inline用于在Notebook中直接显示绘制的图形。
img = img / 2 + 0.5:对输入的图像张量进行反归一化操作
npimg = img.numpy():将PyTorch的张量img转换为numpy数组,以便matplotlib能够处理。
plt.imshow(np.transpose(npimg, (1, 2, 0))):将道数, 高度, 宽度改为高度, 宽度, 通道数。
plt.show():显示绘制的图像。
dataiter = iter(trainloader):创建一个迭代器dataiter,用于遍历trainloader中的数据批次。trainloader是之前定义的数据加载器,用于加载训练数据。

__inti__:构造函数,初始化
conv:卷积层
pool:池化层
fc:全连接层
forward:正向传播
该代码是打印网络的总参数数量

定义了损失函数criterion
该代码是打印网络结构

更多推荐

所有评论(0)