一、引言
什么是卷积神经网络?
卷积神经网络(Convolutional Neural Network,CNN)是一类主要用于处理具有网格结构数据的神经网络模型。它在计算机视觉和图像处理领域具有重要的应用,广泛用于图像分类、目标检测、图像生成等任务。
二、python代码展示
from torch import nn
#此行从 PyTorch 库中导入(神经网络)模块,该模块提供了用于构建神经网络的各种类和函数。
class CNN(nn.Module):
def __init__(self):
super(CNN,self).__init__()#此代码定义一个名为从该类继承的类。该方法是类的构造函数,用于初始化对象。
self.conv1 = nn.Sequential(
nn.Conv2d(
in_channels=1,#输入通道
out_channels=16,输出特征图
kernel_size=5,#卷积核大小
stride=1,#步长
padding=2,#填充
),#一个 2D 卷积层,它接受具有 1 个通道的输入,产生 16 个输出通道,使用内核大小为 5x5、步幅为 1 和填充为 2。
nn.ReLU(),#应用逐元素整流线性单元 (ReLU) 激活的激活函数。
nn.MaxPool2d(kernel_size=2),#最大池化层,以 2 的步幅执行 2x2 池化操作。
)#此代码定义了第一个卷积层。它是用于按顺序堆叠多个图层创建的。
self.conv2 = nn.Sequential(
nn.Conv2d(16,32,5,1,2),
nn.ReLU(),
nn.Conv2d(32,32,5,1,2),
nn.ReLU(),
nn.MaxPool2d(2),
)#此代码定义了第二个卷积层。它遵循与输入和输出通道大小相似的结构,但具有不同的输入和输出通道大小。
# self.conv3 = nn.Sequential(
# nn.Conv2d(32, 64, 5, 1, 2),
# nn.ReLU(),
# )
self.out=nn.Linear(32*7*7,10)
#这一行定义了输出层,它是一个全连接(线性)层。它接受前面卷积层的平坦化输入(32 * 7 * 7)并生成一个大小为10的输出,与分类任务中的类别数匹配。
上面代码是输入通道为1,图片大小为(28,28)
如果改变为输入通道为3,图片大小为(256,256)那么可以参考下图:
从图中可以看出变化:
全连接层linear函数中的参数变化了