欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PyTorch(叁)卷积神经网络之LeNet(1)

程序员文章站 2022-07-06 17:30:42
...

一、卷积层和池化层的作用

        卷积层的作用是从输入的图片中提取特征,如边缘、点和块。池化层的作用是为了缓解卷积层对位置的过度敏感性。

二、LeNet(1)的模型介绍

PyTorch(叁)卷积神经网络之LeNet(1)

LeNet模型一共有7层(不包括输入层),具体的介绍如下:

    Input层:输入1x32x32的图片;

    C1:C1是一个卷积层,使用6个大小为5x5的卷积核进行卷积计算,然后使用sigmoid**函数,输出特征图大小为6x28x28;

    S2:S2是一个池化层,使用卷积核为2x2的卷积核进行最大池化操作,输出的特征图大小为6x14x14;

    C3:C3是一个卷积层,使用16个大小为5x5的卷积核进行卷积计算,然后使用sigmoid**函数,输出特征图大小为16x10x10;

    S4:S4是一个池化层,使用卷积核为2x2的最大池化操作,输出特征图大小为16x5x5;

    C5:C5是一个卷积层,使用卷积核为5x5,全连接生成120个feature map。

    F6:F6是一个全连接层,就是一个普通是神经网络了,先进行线性计算,再进行**函数操作。

三、LeNet(1)模型的pytorch实现

class LeNet(nn.Module):
    def __init__(self):
        super(LeNet,self).__init__()
        self.conv=nn.Sequential(
            nn.Conv2d(1,6,5),#in_channels,out_channels,kernel_size
            nn.Sigmoid(),
            nn.MaxPool2d(2,2),#kernel_size,stride
            nn.Conv2d(6,16,5),
            nn.Sigmoid(),
            nn.MaxPool2d(2,2)
            )
        self.fc=nn.Sequential(
            nn.Linear(16*4*4,120),
            nn.Sigmoid(),
            nn.Linear(120,84),
            nn.Sigmoid(),
            nn.Linear(84,10)
            )
    def forward(self,img):
        feature=self.conv(img)
        output=self.fc(feature.view(img.shape[0],-1))
        return output

四、查看网络每个层的结构

#查看每个层的形状
net=LeNet()
print(net)

PyTorch(叁)卷积神经网络之LeNet(1)