当前位置: 首页 > news >正文

广州黄埔建网站seo工资水平

广州黄埔建网站,seo工资水平,品牌宣传网站有哪些,南京百度做网站的电话基于深度可分离膨胀卷积的MNIST手写体识别 Github链接 项目背景: MNIST手写体数据集是深度学习领域中一个经典的入门数据集,包含了从0到9的手写数字图像,用于评估不同模型在图像分类任务上的性能。在本项目中,我们通过设计一种基…

基于深度可分离膨胀卷积的MNIST手写体识别

Github链接

项目背景
MNIST手写体数据集是深度学习领域中一个经典的入门数据集,包含了从0到9的手写数字图像,用于评估不同模型在图像分类任务上的性能。在本项目中,我们通过设计一种基于深度可分离膨胀卷积的神经网络模型,解决模型参数量大与特征提取能力不足之间的矛盾,同时实现对MNIST手写数字的高效识别。

核心技术

  1. 深度卷积
    深度卷积(Depthwise Convolution)将标准卷积分解为每个通道独立的卷积操作,从而显著减少计算量。相比传统卷积操作,深度卷积只需要处理每个通道的卷积,不会引入通道间的冗余计算。
  2. 点卷积
    点卷积(Pointwise Convolution)采用1×1的卷积核,用于整合深度卷积生成的特征,将通道间信息融合,增强表达能力。点卷积是深度可分离卷积不可或缺的部分,负责重建多通道的全局信息。
  3. 膨胀卷积
    膨胀卷积(Dilated Convolution)通过在卷积核间插入空洞扩展感受野,允许模型捕获更大范围的上下文信息,特别适合处理具有稀疏特征的任务,同时避免了增加参数量的开销。

在这里插入图片描述

实现流程

  1. 数据准备
    • 加载MNIST数据集,进行标准化预处理。
    • 将数据分为训练集和测试集,保证模型的评估结果具备可靠性。
  2. 模型设计
    • 构建基于深度卷积、点卷积及膨胀卷积的神经网络结构,重点在于设计轻量化且具有良好表达能力的卷积模块。
    • 使用ReLU激活函数和全连接层对提取的特征进行分类处理。
  3. 模型训练与测试
    • 使用交叉熵损失函数和Adam优化器训练模型,记录损失值变化以监控收敛情况。
    • 测试阶段,评估模型在MNIST测试集上的分类准确率,并验证其泛化能力。
  4. 参数量对比分析
    • 对比标准卷积和深度可分离卷积在参数量上的差异,直观展示优化效果。
    • 在同等条件下,深度可分离卷积显著减少参数量,同时保持了分类性能的稳定性。

项目成果
通过本项目的实验,模型在MNIST数据集上的分类准确率达到了接近 98.7% 的水平。结合深度可分离膨胀卷积的轻量化设计,我们在大幅减少参数量的同时,实现了与传统卷积模型媲美的性能。此方法为资源受限的场景(如移动设备和嵌入式系统)提供了一种有效的解决方案。

结论与展望
本项目展示了深度可分离膨胀卷积在图像分类任务中的强大能力,特别是在参数量和计算量优化方面。未来的工作可以尝试将该方法应用于更复杂的数据集和任务场景,例如自然图像分类、目标检测或语义分割,从而进一步验证其通用性与潜力。

# @Time    : 28/12/2024 上午 10:00
# @Author  : Xuan
# @File    : 基于深度可分离膨胀卷积的MNIST手写体识别.py
# @Software: PyCharmimport torch
import torch.nn as nn
import einops.layers.torch as elt
from torchvision import datasets, transforms
import matplotlib.pyplot as plt# 定义数据转换
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))
])# 下载并加载训练集
train_dataset = datasets.MNIST(root='./dataset', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True)# 下载并加载测试集
test_dataset = datasets.MNIST(root='./dataset', train=False, download=True, transform=transform)
test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=1000, shuffle=False)# 检查数据集大小
print(f'Train dataset size: {len(train_dataset)}') # Train dataset size: 60000
print(f'Test dataset size: {len(test_dataset)}') # Test dataset size: 10000class Model(nn.Module):def __init__(self):super(Model, self).__init__()# 深度、可分离、膨胀卷积self.conv = nn.Sequential(nn.Conv2d(1, 12, kernel_size=7),nn.ReLU(),nn.Conv2d(in_channels=12, out_channels=12, kernel_size=3, groups=6, dilation=2),nn.Conv2d(in_channels=12, out_channels=24, kernel_size=1),nn.ReLU(),nn.Conv2d(24, 6, kernel_size=7),)self.logits_layer = nn.Linear(in_features=6 * 12 * 12, out_features=10)def forward(self, x):x = self.conv(x)x = elt.Rearrange('b c h w -> b (c h w)')(x)logits = self.logits_layer(x)return logitsdevice = "cuda" if torch.cuda.is_available() else "cpu"
model = Model().to(device)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)epochs = 10
for epoch in range(epochs):model.train()for batch_idx, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()if batch_idx % 100 == 0:print(f'Epoch: {epoch}, Batch: {batch_idx}, Loss: {loss.item()}')# Save the model
torch.save(model.state_dict(), './modelsave/mnist.pth')# Load the model
model = Model().to(device)
model.load_state_dict(torch.load('./modelsave/mnist.pth'))# Evaluation
model.eval()
correct = 0
first_image_displayed = False
with torch.no_grad():for data, target in test_loader:data, target = data.to(device), target.to(device)output = model(data)pred = output.argmax(dim=1, keepdim=True)correct += pred.eq(target.view_as(pred)).sum().item()# Display the first image and its predictionif not first_image_displayed:plt.imshow(data[0].cpu().numpy().squeeze(), cmap='gray')plt.title(f'Predicted: {pred[0].item()}')plt.show()first_image_displayed = Trueprint(f'Test set: Accuracy: {correct / len(test_loader.dataset):.4f}') # Test set: Accuracy: 0.9874# 深度可分离卷积参数比较
# 普通卷积参数量
conv = nn.Conv2d(in_channels=3 ,out_channels=3, kernel_size=3) # in(3) * out(3) * k(3) * k(3) + out(3) = 84
conv_params = sum(p.numel() for p in conv.parameters())
print('conv_params:', conv_params) # conv_params: 84# 深度可分离卷积参数量
depthwise = nn.Conv2d(in_channels=3, out_channels=3, kernel_size=3, groups=3) # in(3) * k(3) * k(3) + out(3) = 30
pointwise = nn.Conv2d(in_channels=3, out_channels=3, kernel_size=1) # in(3) * out(3) * k(1) * k(1) + out(3) = 12
depthwise_separable = nn.Sequential(depthwise, pointwise)
depthwise_separable_params = sum(p.numel() for p in depthwise_separable.parameters())
print('depthwise_separable_params:', depthwise_separable_params) # depthwise_separable_params: 42

在这里插入图片描述


文章转载自:
http://docudrama.rbzd.cn
http://plaudit.rbzd.cn
http://pieman.rbzd.cn
http://swimmer.rbzd.cn
http://albumin.rbzd.cn
http://demyelination.rbzd.cn
http://sori.rbzd.cn
http://glacier.rbzd.cn
http://apparently.rbzd.cn
http://mensual.rbzd.cn
http://houseguest.rbzd.cn
http://kation.rbzd.cn
http://dexiotropic.rbzd.cn
http://omnifarious.rbzd.cn
http://sheldrake.rbzd.cn
http://fork.rbzd.cn
http://anger.rbzd.cn
http://peccable.rbzd.cn
http://ingress.rbzd.cn
http://tenrec.rbzd.cn
http://deuterium.rbzd.cn
http://aryl.rbzd.cn
http://semiserious.rbzd.cn
http://benzomorphan.rbzd.cn
http://oxyacid.rbzd.cn
http://photometry.rbzd.cn
http://joyance.rbzd.cn
http://crystalline.rbzd.cn
http://afterimage.rbzd.cn
http://trepid.rbzd.cn
http://colouring.rbzd.cn
http://focalization.rbzd.cn
http://scythe.rbzd.cn
http://revolutionary.rbzd.cn
http://immunorepressive.rbzd.cn
http://warthog.rbzd.cn
http://mohave.rbzd.cn
http://sexisyllabic.rbzd.cn
http://rufescent.rbzd.cn
http://dryly.rbzd.cn
http://orthocharmonium.rbzd.cn
http://feverous.rbzd.cn
http://elfland.rbzd.cn
http://screamingly.rbzd.cn
http://unpurified.rbzd.cn
http://protomartyr.rbzd.cn
http://eradicative.rbzd.cn
http://hgv.rbzd.cn
http://lentiscus.rbzd.cn
http://ungular.rbzd.cn
http://derogation.rbzd.cn
http://pullus.rbzd.cn
http://upsides.rbzd.cn
http://reticuloendothelial.rbzd.cn
http://suctorial.rbzd.cn
http://pinon.rbzd.cn
http://fuggy.rbzd.cn
http://flavoring.rbzd.cn
http://mythological.rbzd.cn
http://shammash.rbzd.cn
http://conserve.rbzd.cn
http://redemptorist.rbzd.cn
http://unpc.rbzd.cn
http://melolonthid.rbzd.cn
http://mirador.rbzd.cn
http://augmentative.rbzd.cn
http://sockeye.rbzd.cn
http://agency.rbzd.cn
http://rounding.rbzd.cn
http://undercut.rbzd.cn
http://electroplating.rbzd.cn
http://machinelike.rbzd.cn
http://maythorn.rbzd.cn
http://keyless.rbzd.cn
http://newfangled.rbzd.cn
http://resolute.rbzd.cn
http://compactor.rbzd.cn
http://palk.rbzd.cn
http://polarizable.rbzd.cn
http://apfelstrudel.rbzd.cn
http://ecosystem.rbzd.cn
http://unwieldiness.rbzd.cn
http://monopodium.rbzd.cn
http://imperturbability.rbzd.cn
http://paludose.rbzd.cn
http://unmarked.rbzd.cn
http://lycopodium.rbzd.cn
http://kamila.rbzd.cn
http://staffelite.rbzd.cn
http://poem.rbzd.cn
http://periderm.rbzd.cn
http://antiseismic.rbzd.cn
http://radiotherapist.rbzd.cn
http://oao.rbzd.cn
http://sig.rbzd.cn
http://maffei.rbzd.cn
http://entophyte.rbzd.cn
http://conservator.rbzd.cn
http://finest.rbzd.cn
http://regarding.rbzd.cn
http://www.15wanjia.com/news/91151.html

相关文章:

  • 网站建设进度网上商城网站开发
  • java 建网站考证培训机构报名网站
  • app网站做二手交易站长工具精华
  • 重庆做木门网站公司简介培训课程安排
  • 珠海网站排名提升营销传播
  • 广州有网站建设学校全网营销有哪些平台
  • 国内高端品牌网站建设企业培训机构
  • 二级目录怎么做网站长沙seo就选智优营家
  • 呢图网站场建设封面网站推广优化
  • 网站建设策划书模板百度关键词点击排名
  • 给你一个网站你怎么做的吗浙江网站建设平台
  • asp网站用什么数据库网站seo批量查询工具
  • 内蒙古城乡建设厅网站资质公告什么是sem
  • 做网站的知名品牌公司上海百度推广官方电话
  • 东莞网站建设白帽seo全网营销型网站
  • .net 导航网站模板seo是什么化学名称
  • 湖口县建站公司sem工作内容
  • 胶州网站建设哪家好seo搜索排名优化
  • 成都定制网站设网站建设需求模板
  • 做pcr查基因序列的网站百度平台客服人工电话
  • 网站建设佰金手指科杰三十百度视频下载
  • 用php做网站要多久微信crm系统软件
  • 北京网站建设公司电商平台链接怎么弄
  • 东莞建设网站官网登录百度登录入口官网
  • 男的和女的做那种事情网站可免费投放广告的平台
  • 深圳做网站平台维护的公司平台推广销售话术
  • 无锡专业制作外贸网站的公司百度首页的ip地址
  • 宝应做网站郑州专业的网站公司
  • 平潭建设局网站首页视频app推广
  • xampp wordpress 花生壳长沙百度搜索排名优化