自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试:开源项目
开源项目完整代码及基础教程:
资料获取,关注公众号【一起来学习哟】获取
CNN模型:
1.导入必要的库和模块:
torch:PyTorch深度学习框架。
torchvision:PyTorch的计算机视觉库,用于处理图像数据。
transforms:包含数据预处理的模块。
nn:PyTorch的神经网络模块。
F:PyTorch的函数模块,包括各种激活函数等。
optim:优化算法模块。
2.数据预处理:
transforms.Compose:将一系列数据预处理步骤组合在一起。
transforms.ToTensor():将图像数据转换为张量。
transforms.Normalize:对图像数据进行归一化处理,以均值0.5和标准差0.5。
定义批处理大小:
batch_size:每个训练批次包含的图像数量。
加载训练集:
trainset:使用CIFAR-10数据集,设置训练标志为True。
torch.utils.data.DataLoader:创建用于加载训练数据的数据加载器,指定批处理大小和其他参数。
加载测试集:
testset:使用CIFAR-10数据集,设置训练标志为False。
torch.utils.data.DataLoader:创建用于加载测试数据的数据加载器,指定批处理大小和其他参数。
定义CNN模型:
My_CNN:自定义的卷积神经网络模型,包括卷积层、池化层和全连接层。
创建CNN模型、损失函数和优化器:
model:创建My_CNN模型的实例。
nn.CrossEntropyLoss():定义用于多分类问题的交叉熵损失函数。
optim.SGD:使用随机梯度下降优化器,指定学习率和动量。
训练模型:
epochs:指定训练轮数。
循环中的嵌套循环:迭代训练数据批次,进行前向传播、反向传播和参数优化。
保存模型:
model_path:指定模型保存的路径。
torch.save:保存训练后的模型。
在测试集上评估模型性能:
计算模型在测试集上的准确率。
计算每个类别的准确率。
具体代码来说:
transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
解释:
transforms.Compose:这是一个用于组合多个数据预处理步骤的函数。它允许你按顺序应用多个转换,以便将原始数据转换为最终的形式。
transforms.ToTensor():这是一个数据预处理步骤,将图像数据转换为张量(tensor)的格式。在深度学习中,张量是常用的数据表示方式,因此需要将图像数据从常见的图像格式(如JPEG或PNG)转换为张量。
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)):这是另一个数据预处理步骤,用于对图像进行归一化处理。归一化的目的是将图像的像素值缩放到一个特定的范围,以便神经网络更容易学习。在这里,均值和标准差都被设置为0.5,这将使图像像素值在-1到1之间。
batch_size = 4
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
download=