卷积神经网络之LeNet

1、1998年LeCun 推出了LeNet 网络,它是第一个广为流传的卷积神经网络。

2、LeNet 网络包含了卷积层、池化层、全连接层,这些都是现代CNN 网络的基本组件。

  • 输入层:二维图像,尺寸为32x32
  • C1、C3、C5 层:二维卷积层。其中C5 将输入的 feature map(尺寸 16@5x5 )转化为尺寸为120x1x1 的 feature map,然后转换为长度为120 的一维向量。这是一种常见的、将卷积层的输出转换为全连接层的输入的一种方法。
  • S2、S4 层:池化层。使用sigmoid 函数作为激活函数。后续的 CNN 都使用ReLU 作为激活函数。
  • F6 层:全连接层。
  • 输出层:由欧式径向基函数单元组成。后续的CNN 使用softmax 输出单元。下表中,@ 分隔了通道数量和feature map 的宽、高。
网络层核/池大小核数量步长输入尺寸输出尺寸
INPUT1@32×32
C15×5611@32×326@28×28
S22×226@28×286@14×14
C35×51616@14×1416@10×10
S42×2216@10×1016@5×5
C55×5120116@5×5120@1×1
F612084
OUTPUT8410

3、网络实现

接下来用Python+Pytorch来搭建LeNet-5,实例化一个Sequential来连接所有的层:

net=nn.Sequential(
        nn.Conv2d(1,6,kernel_size=(5,5)),nn.Sigmoid(),nn.AvgPool2d(kernel_size=2,stride=2),
        nn.Conv2d(6,16,kernel_size=(5,5)),nn.Sigmoid(),nn.AvgPool2d(kernel_size=2,stride=2),
        nn.Flatten(),
        nn.Linear(16*5*5,120),nn.Sigmoid(),
        nn.Linear(120,84),nn.Sigmoid(),
        nn.Linear(84,10)

为了检查搭建的网络是否正确,可以给net输入一个32 x 32的矩阵来检查每层的输出:

X=torch.rand((1,1,32,32),dtype=torch.float32)
    for layer in net:
        X=layer(X)
        print(layer.__class__.__name__,'out shape:\t',X.shape)

运行结果如下:

Conv2d out shape:	 torch.Size([1, 6, 28, 28])
Sigmoid out shape:	 torch.Size([1, 6, 28, 28])
AvgPool2d out shape:	 torch.Size([1, 6, 14, 14])
Conv2d out shape:	 torch.Size([1, 16, 10, 10])
Sigmoid out shape:	 torch.Size([1, 16, 10, 10])
AvgPool2d out shape:	 torch.Size([1, 16, 5, 5])
Flatten out shape:	 torch.Size([1, 400])
Linear out shape:	 torch.Size([1, 120])
Sigmoid out shape:	 torch.Size([1, 120])
Linear out shape:	 torch.Size([1, 84])
Sigmoid out shape:	 torch.Size([1, 84])
Linear out shape:	 torch.Size([1, 10])

说明:
Conv2d out shape:卷积层输出图像的高/宽可以用下面公式计算:
h ′ = ( h + 2 ∗ padding − h 1 ) / stride + 1

w ′ = ( w + 2 ∗ padding − w 1 ) / stride + 1

h/w是输入图像的高/宽,padding是填充,stride是步幅,在卷积层中一般为1,h1/w1是卷积核的高/宽。第一个卷积层输入32 x 32,所以输出=32+2×0-5+1=28;卷积层输出图像的通道数跟卷积核的数目相同,由于第一个卷积层有6个卷积核,因此输出图像有6个通道;最后输出图像(6 X 28 X 28)。池化层输出图像的图像通道数不变,高/宽计算方式跟卷积层输出图像的高/宽一样。

参考:

1、CNN:图像分类(https://www.huaxiaozhuan.com/)

2、卷积神经网络之LeNet(一)(CSDN)


关于明柳梦少

坚守自己的原则,不随波逐流。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注