图像分类及经典CNN实现之(一)

您所在的位置:网站首页 激活函数类型包括 图像分类及经典CNN实现之(一)

图像分类及经典CNN实现之(一)

2023-05-15 16:00| 来源: 网络整理| 查看: 265

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

LeNet5网络结构

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

LeNet代码实现 import torch import torch.nn as nn import torch.nn.functional as F class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() # super().__init__()调用父类的init方法 # 卷积层C1 self.conv1 = nn.Conv2d(1, 6, kernel_size=(5, 5)) # 输入通道1, 输出通道6, 卷积核大小为5x5 # 池化层S2 self.pool1 = nn.MaxPool2d(kernel_size=(2, 2), stride=2) # 窗口大小2x2, 输入与输出通道均为6 # 卷积层C3 self.conv2 = nn.Conv2d(6, 16, kernel_size=(5, 5)) # 池化层S4 self.pool2 = nn.MaxPool2d(kernel_size=(2, 2), stride=2) # 窗口大小2x2, 输入与输出通道均为16 self.fc0 = nn.Linear(16 * 4 * 4, 120) # 把第三个卷积当作全连接层 # 全连接层F self.fc1 = nn.Linear(120, 84) # 神经元个数设置为84 # 全连接层(输出层) self.fc2 = nn.Linear(84, 10) # 分为10类 def forward(self, x): x = self.conv1(x) x = self.pool1(F.relu(x)) x = self.conv2(x) x = self.pool2(F.relu(x)) x = torch.flatten(x, 1) x = self.fc0(F.relu(x)) x = self.fc1(F.relu(x)) x = self.fc2(F.relu(x)) return x 参考

!(https://blog.csdn.net/DIPDWC/article/details/117249500)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3