pytorch深度学习:CNN卷积神经网络(三)

上两节博客,分别学习了卷积神经网络的基础知识和处理手写字数据集,具体的可以看前边两篇博客:
CNN基础知识
CNN处理mnist数据集

mnist只是单一高度(channel)的数据集,使用卷积处理时的卷积核是二维平面形状,而实际情况下我们要处理的往往是彩色图像,因此是有高度(channel)值的,这时卷积核更像是一个立方体的样子,看下面的图就很好理解了。
在这里插入图片描述

1.问题的提出

这节课我们用另一个著名的数据集CIFAR-10来做彩色图片分类,CIFAR-10是一个常用的彩色图片数据集,它有10个类别airplane、automobile、bird、cat、deer、dog、frog、horse、ship和trunk。每张图片都是3×32×32,也就是3通道彩色图片,分辨率为32×32。

我们选几张图片来看一下,今天要做的就是搭建CNN完成这个彩色图片的10分类任务。
在这里插入图片描述

2.数据处理

数据集的准备仍然使用torchvison来下载数据集,第一次下载可能会有些慢,如果已经下载好了,可以通过root参数指定。

仍然将数据分为训练集和测试集,还要对数据进行归一化的处理,同时使用批数据处理的方法进行训练,见程序:

# 定义对数据的预处理
transform = transforms.Compose([
   transforms.ToTensor(),  # 转为Tensor
   transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),  # 归一化
    ])

# 训练集
train_data = tv.datasets.CIFAR10(
        root='C:\\Users\\hurunqiao\\Downloads',
        train=True,
        download=True,
        transform=transform
    )
	
train_loader = torch.utils.data.DataLoader(
        dataset=train_data,
        batch_size=Batch_size,
        shuffle=True,
        num_workers=2
    )
    
# 测试集
test_data = tv.datasets.CIFAR10(
        'C:\\Users\\hurunqiao\\Downloads',
        train=False,
        download=True,
        transform=transform
    )

test_loader = torch.utils.data.DataLoader(
        dataset=test_data,
        batch_size=Batch_size,
        shuffle=False,
        num_workers=2
    )

classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

还要定义些超参数:Epoch(训练轮数)、Batch_size(批数据处理个数)、LR(学习率)

# 一些超参数的定义
Epoch = 3
Batch_size = 4
LR = 0.01

3.CNN网络的搭建

我们这次搭建的CNN网络具有两层卷积层、两层池化层和两层全连接层。它们的参数设置如下:
- 卷积层:

  • in_channels: 表示输入图像的高度(channel),彩色图像为3。
  • out_channels: 表示输出的高度(channel),也可理解为卷积核个数。
  • kernel_size: 表示卷积核的大小(5×5的方形)。
  • stride: 表示步长。
  • padding: 当 stride=1时,如果想要卷积出来的图片长宽没有变化 ,padding=(kernel_size-1)/2。

- 池化层:
使用的是Max Pooling,我们只需要设置池化层Filter的大小。

- 全连接层:

  • 输入层单元数: 将处理后的数据展平成一维向量后的个数。<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值