卷积神经网络之 - Lenet

本文建议阅读时间 10 min

前言

Lenet 是一系列网络的合称,包括 Lenet1 - Lenet5,由 Yann LeCun 等人在 1990 年《Handwritten Digit Recognition with a Back-Propagation Network》中提出,是卷积神经网络的 HelloWorld。

Lenet5

Lenet 的最终版本是 Lenet5,是一个 7 层的神经网络,包含 3 个卷积层,2 个池化层,1 个全连接层。其中所有卷积层的所有卷积核都为 5x5,步长 strid=1,池化方法都为全局 pooling,激活函数为 Sigmoid,网络结构如下:

Lenet-5 网络结构

代码复现

Lenet 网络的参数量,以及每层的输出特征图大小如下:

  • 卷积的卷积核都为 5×5 步长 stride=1

  • 输入是 32×32

  • -> 6@28*28(卷积 C1)   参数:5×5×6+6 =156

  • -> 6@14*14(池化 S2)   参数:偏移量参数  2×6

  • -> 16@10*10(卷积 C3)  参数:5×5×6×16+16 = 2416  # 这里与原始的 LeNet 网络有区别

  • -> 16@5*5(池化 S4)    参数:偏移量参数  2×16

  • -> 120@1*1(卷积 C5)当然,这里也可以认为是全连接层(因为上一层得到的特征图是 5x5,卷积核也为 5x5)   参数:5×5×16×120+120 = 48120

  • -> 84(全连接 F6) 这个 84 的选取有个背景:与 ASCII 码表示的 7×12 的位图大小相等  参数:120×84

  • -> 10 (输出类别数)  参数:84×10

下面我们用 Pytorh 框架实现一些 Lenet5,实际代码会与上面的说明有些差别,并模拟一个输入进行测试。

import torch
import torch.nn as nn
import torch.nn.functional as Fclass LeNet5(nn.Module):def __init__(self, num_classes, grayscale=False): """num_classes: 分类的数量grayscale:是否为灰度图"""super(LeNet5, self).__init__()self.grayscale = grayscaleself.num_classes = num_classesif self.grayscale: # 可以适用单通道和三通道的图像in_channels = 1else:in_channels = 3# 卷积神经网络self.features = nn.Sequential(nn.Conv2d(in_channels, 6, kernel_size=5),nn.MaxPool2d(kernel_size=2),nn.Conv2d(6, 16, kernel_size=5),nn.MaxPool2d(kernel_size=2)   # 原始的模型使用的是 平均池化)# 分类器self.classifier = nn.Sequential(nn.Linear(16*5*5, 120),  # 这里把第三个卷积当作是全连接层了nn.Linear(120, 84), nn.Linear(84, num_classes))def forward(self, x):x = self.features(x) # 输出 16*5*5 特征图x = torch.flatten(x, 1) # 展平 (1, 16*5*5)logits = self.classifier(x) # 输出 10probas = F.softmax(logits, dim=1)return logits, probasnum_classes = 10  # 分类数目
grayscale = True  # 是否为灰度图
data = torch.rand((1, 1, 32, 32))
print("input data:\n", data, "\n")
model = LeNet5(num_classes, grayscale)
logits, probas = model(data)
print("logits:\n",logits)
print("probas:\n",probas)

最后模拟了一个输入,输出一个分类器运算后的结果和 10 个 softmax 概率值

输出结果

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾那些年做的学术公益-你不是一个人在战斗适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部