【分类网络】LeNet

LeNet是由Yan LeCun提出的,是卷积神经网络的早期典范,主要用于手写字符识别。它包含6层,包括卷积层、下采样层和全连接层,其结构影响了现代CNN设计。LeNet通过局部连接、权值共享减少了参数数量,提高了识别准确性,为深度学习的发展奠定了基础。
摘要由CSDN通过智能技术生成

⭐ LeNet

参考文献:《Gradient-Based Learning Applied to Document Recognition(1998)》

LeNet是一系列网络的合称,包括LeNet-1~LeNet-5,由深度学习三巨头的Yan LeCun在1900年提出,他同时也是卷积神经网络(CNN)之父,现在所说LeNet代指LeNet-5。LeNet的实现确立了CNN的结构,现在的神经网络中的许多内容在LeNet网络结构中都能看到,例如卷积层、Pooling层、ReLU层。LeNet网络结构比较简单,适合神经网络的入门学习。


✔️诞生背景

当初LeNet-5的设计主要是为了解决手写识别问题。那时传统的识别方案很多特征都是手工制作的,识别的准确率很大程度上受制于所设计的特征,而且最大的问题在于手动设计特征对领域性先验知识的要求很高还耗时耗力,更别提什么泛化能力,基本上只能针对特定领域。

✔️网络结构

LeNet是一个经典的神经网络架构,最初用于手写数字的识别。但是,可以用它来搭建任何分类模型,包括奥特曼分类。下面是使用LeNet搭建奥特曼分类的步骤: 1.准备数据集 首先,需要准备奥特曼的图像数据集,其中应包括奥特曼的各种姿势和形态。可以使用ImageNet等公共数据集,也可以自己收集数据。 2.数据预处理 数据预处理是神经网络训练的重要步骤之一。对于奥特曼分类,预处理包括图像的缩放、归一化和转换为灰度图像等。 3.搭建LeNet模型 LeNet模型由卷积层、池化层和全连接层组成。对于奥特曼分类,可以使用以下模型: ```python import torch import torch.nn as nn class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() self.conv1 = nn.Conv2d(1, 6, 5) self.pool1 = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.pool2 = nn.MaxPool2d(2, 2) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool1(torch.relu(self.conv1(x))) x = self.pool2(torch.relu(self.conv2(x))) x = x.view(-1, 16 * 5 * 5) x = torch.relu(self.fc1(x)) x = torch.relu(self.fc2(x)) x = self.fc3(x) return x ``` 这个模型由两个卷积层和两个全连接层组成。每个卷积层后面都有一个池化层,以减少特征图的大小。 4.训练模型 使用PyTorch训练模型的步骤包括定义优化器、定义损失函数、迭代训练数据集等。以下是一个简单的训练函数: ```python def train(model, train_loader, optimizer, criterion, device): model.train() running_loss = 0.0 for i, data in enumerate(train_loader): inputs, labels = data inputs, labels = inputs.to(device), labels.to(device) optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() if i % 100 == 99: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 100)) running_loss = 0.0 ``` 5.评估模型 评估模型的步骤包括使用测试数据集计算模型的准确率、精度、召回率等指标。以下是一个简单的评估函数: ```python def evaluate(model, test_loader, device): model.eval() correct = 0 total = 0 with torch.no_grad(): for data in test_loader: inputs, labels = data inputs, labels = inputs.to(device), labels.to(device) outputs = model(inputs) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the test images: %d %%' % ( 100 * correct / total)) ``` 6.调整模型 如果模型的性能不够好,可以通过调整超参数、增加数据集等方式来提升模型的性能。 通过以上步骤,可以使用LeNet搭建奥特曼分类模型,并对其进行训练和评估。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值