基于CIFAR10数据集的CNN

本文记录了使用PyTorch搭建卷积神经网络(CNN)的过程,参考优快云上的一篇博客实现了图像识别任务。通过对CIFAR10数据集的训练和测试,加深了对CNN和神经网络的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

本日志记录我初次用pytorch搭建卷积神经网络,参考了很多别人的经验和代码,主要是根据https://blog.youkuaiyun.com/jining11/article/details/89114502这篇博客,按照博客上的内容一步步弄下来的,加强了我对CNN的理解,并明白了如何使用torch搭建神经网络。(在这里十分建议看懂之后在自己写代码,而不是直接ctrl+c/ctrl+v)

CNN

卷积神经网络之前学习的时候就接触过,在图像识别领域用的比较频繁。之前上数字图像处理课程的时候,最后一个实验是识别麻将和交通标志。如果使用卷积神经网络进行训练识别,会要比简单的对比准确率高。为了熟悉CNN。特意从csdn上找了一篇博客进行仿写。博客链接: 原博客地址

数据集介绍

CIFAR-10数据集可以在官网下载链接: link不过网速很慢,我会附上我下载好的python版本。CIFAR中50000个作为train数据,10000作为test数据。这些图片中不存在类的重叠。更加详细的介绍上链接。官网介绍的很详细。
CIFAR有10个类别,60000个32*32像素的图片,如下图为部分展示
CIFAR部分数据

代码实现

代码可以分为搭建神经网络,写fit函数,读取数据集合3个部分,下面将分别介绍

读取数据集合

关于数据读取之后,转换成torch的张量形式,和超参数的选择代码。


cifar10_mean = (0.49,0.48,0.45)
cifar10_std = (0.25,0.24,0.26)

#define transform operations
train_transform = transforms.Compose([
    #data augmentation
    transforms.Pad(4),
    transforms.RandomHorizontalFlip(),
    transforms.RandomCrop(32),
    
    transforms.ToTensor(),
    transforms.Normalize(cifar10_mean,cifar10_std)
    ])

test_transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(cifar10_mean,cifar10_std)
    ])


#load data读取数据
train_dataset = torchvision.datasets.CIFAR10(root='./data/',
                                             train=True,
                                             transform=train_transform,
                                             download=True)
test_dataset = torchvision.datasets.CIFAR10(root='./data',
                                            train=False,
                                            transform=test_transform,
                                            )
#将训练集分为校验和训练
num_train = int(0.9*len(train_dataset))
num_val = int(0.1*
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值