当前位置:网站首页>深度学习基础:9.复现经典网络:LeNet5与AlexNet
深度学习基础:9.复现经典网络:LeNet5与AlexNet
2022-07-15 15:50:00 【zstar-_】
LeNet5
1998年, LeNet5 被LeCun等人在论文《Gradient-Based Learning Applied to Document Recognition》中正式提出,它被认为是现代卷积神经网络的奠基者。
网络结构图:
import torch
from torch import nn
from torch.nn import functional as F
class Model(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 6, 5) # (H+2p-K)/S + 1
self.pool1 = nn.AvgPool2d(kernel_size=2, stride=2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.pool2 = nn.AvgPool2d(2)
self.fc1 = nn.Linear(5 * 5 * 16, 120)
self.fc2 = nn.Linear(120, 84)
def forward(self, x):
x = torch.tanh(self.conv1(x))
x = self.pool1(x)
x = torch.tanh(self.conv2(x))
x = self.pool2(x)
x = x.view(-1, 5 * 5 * 16)
x = torch.tanh(self.fc1(x))
output = F.softmax(self.fc2(x), dim=1) # (samples, features)
使用模型可视化工具torchinfo可以模拟输入,查看模型信息。
from torchinfo import summary
net = Model()
summary(net, input_size=(10, 1, 32, 32))
输出结果如图:

AlexNet
AlexNet诞生于有“视觉界奥林匹克”之称的大规模视觉识别挑战比赛ILSVRC(ImageNet Large Scale
Visual Recognition Challenge)。AlexNet出现之前,最好成绩一直由手工提取特征+支持向量机的算法获得,最低错误率为25.8%。2012年,AlexNet进入ILSVRC竞赛,一下将错误率降低到了15.3%。
相比于LeNet5,AlexNet主要做出了如下改变:
- 卷积核更小、网络更深、通道数更多
- 使用了ReLU激活函数
- 使用了Dropout层来控制模型复杂度,控制过拟合
- 引入了大量传统或新兴的图像增强技术来扩大数据集,进一步缓解过拟合。
- 使用GPU对网络进行训练
AlexNet的网络结构如图所示:
class Model(nn.Module):
def __init__(self):
super().__init__()
# 为了处理尺寸较大的原始图片,先使用11x11的卷积核和较大的步长来快速降低特征图的尺寸
# 同时,使用比较多的通道数,来弥补降低尺寸造成的数据损失
self.conv1 = nn.Conv2d(3, 96, kernel_size=11, stride=4)
self.pool1 = nn.MaxPool2d(kernel_size=3, stride=2) # overlap pooling
# 已经将特征图尺寸缩小到27x27,计算量可控,可以开始进行特征提取了
# 卷积核、步长恢复到业界常用的大小,进一步扩大通道来提取数据
self.conv2 = nn.Conv2d(96, 256, kernel_size=5, padding=2)
self.pool2 = nn.MaxPool2d(kernel_size=3, stride=2)
# 疯狂提取特征,连续用多个卷积层
# kernel 5, padding 2, kernel 3, padding 1 可以维持住特征图的大小
self.conv3 = nn.Conv2d(256, 384, kernel_size=3, padding=1)
self.conv4 = nn.Conv2d(384, 384, kernel_size=3, padding=1)
self.conv5 = nn.Conv2d(384, 256, kernel_size=3, padding=1)
self.pool3 = nn.MaxPool2d(kernel_size=3, stride=2)
# 进入全连接层,进行信息汇总
self.fc1 = nn.Linear(6 * 6 * 256, 4096) # 上层所有特征图上的所有像素
self.fc2 = nn.Linear(4096, 4096)
self.fc3 = nn.Linear(4096, 1000)
def forward(self, x):
x = F.relu(self.conv1(x))
x = self.pool1(x)
x = F.relu(self.conv2(x))
x = self.pool2(x)
x = F.relu(self.conv3(x))
x = F.relu(self.conv4(x))
x = F.relu(self.conv5(x))
x = self.pool3(x)
x = x.view(-1, 6 * 6 * 256) # 将数据拉平
x = F.dropout(x, p=0.5)
x = F.relu(F.dropout(self.fc1(x), p=0.5))
x = F.relu(self.fc2(x))
output = F.softmax(self.fc3(x), dim=1)
查看模型信息:
net = Model()
summary(net, input_size=(10, 3, 227, 227))

边栏推荐
- SourceInsight plug-in use
- Send your code into space and develop "the greatest work" with Huawei cloud
- 助力开发者,全方位解读 APISIX 测试案例
- @Difference between controller and @restcontroller
- 使用TIBCO Rendezvous发送hello world,实现监听和发送
- 工程监测仪器振弦无线采集仪的采集数据发送方式
- freeswitch的话单模块
- STM32 internal flash operation function
- Salesforce email sent to spam mailbox or SF email processing method not received (dkim - New CNAME version)
- [7.8-7.15] review of wonderful technical blog posts in the writing community
猜你喜欢
随机推荐
Code implementation of jump between IAP bootload and app
A ring composed of four colors is filled into a ring composed of five segments, so how many combinations (full quantity) can each ring have with different colors from the adjacent ones.
【用户文章】P4合并实践指南之实例拆解Resolve
关于Kubernetes中kubelet的一些笔记
DBeaver连接mysql错误:The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents more than
Salesforce发布的振奋人心的新功能集锦
Volatile low configuration syn, realizing visibility and order
在Salesforce中基于SAML 2.0搭建SSO并启用JIT User Provisioning(SF Orgs间 / SF Org与Experience Cloud间 / 其他IdP)
@Controller和@RestController的区别
mysql 创建学生表并查询成绩
[comprehensive pen test] difficulty 2/5, recursive application, prefix and optimization
Modbus timeout setting
数据库每日一题---第23天:游戏玩法分析 l
Salesforce Certified Sharing and Visibility Designer (SU20)认证考试总结
知识干货:基础存储服务新手体验营
【服务器数据恢复】IBM某型号存储热备盘同步数据过程中硬盘离线导致RAID5崩溃的数据恢复案例
CAS compare and swap exchange after comparison
【动态规划】—— 数位统计DP
【动态规划】—— 计数类DP
Comparable to headhunter resume sorting skills how to quickly sort out resumes









