1.实验目的
- 掌握ResNet网络模型的结构。
- 掌握ResNet网络模型的实现。
2.实验要求
编程实现ResNet网络模型,并使用该模型对给定的数据进行分类实验。要求代码格式规范,注释齐全,程序可正常运行。
3.模型设计
首先,模型通过一个卷积层对输入图像进行特征提取。这个卷积层包括一个7x7的卷积核,步幅为2,使用ReLU激活函数,并进行批归一化和最大池化操作,以减小输入图像的尺寸。
接下来,模型添加了4个ResNet模块(resnet_block1至resnet_block4)。每个ResNet模块由多个残差块(Residual Block)组成。每个残差块包含两个3x3的卷积层,并在需要时使用1x1的卷积层进行维度匹配。每个残差块都使用ReLU激活函数和批归一化操作,并在最后将残差块的输出与输入相加,形成残差连接
在ResNet模块之后,模型添加了一个全局平均池化层(global_avg_pool)来降低特征图的空间维度,得到一个大小为512的特征向量。
最后,模型使用一个全连接层(fc)将特征向量映射到10个类别的输出
4.模型实现
代码如下:
import torch
from torch import nn
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
# 定义残差块
class Residual(nn.Module