首页/新闻资讯/正文详情

【深度学习项目实战·13】服装图像分类:在相同条件下比较MLP与CNN

发布时间:2026/11/6 8:48:59 来源:云帆数科 栏目:资讯中心
【深度学习项目实战·13】服装图像分类:在相同条件下比较MLP与CNN
文章目录01 本篇要解决什么问题02 背景同样是28×28分类难点已经改变03 实操设计一个有边界的比较实验1先下载沿用固定划分2MLP先把图像展平成向量3CNN保留二维邻域信息4控制能控制的条件5比较指标同时查看错误样本6从小规模检查过渡到完整比较04 一个具体例子一条命令训练两个模型05 常见问题与自测06 本篇回顾与下一步01 本篇要解决什么问题跑通MNIST以后很容易想试试更大的模型。但一个模型的准确率比另一个高究竟是结构带来的还是训练轮数、样本划分或数据增强不同本篇使用Fashion-MNIST让一个MLP和一个小CNN完成同一任务。除了训练还要把“怎样比较”这件事做清楚。本篇关键词Fashion-MNIST、MLP、CNN、公平比较、错分分析。完成标志用同一份划分训练两个模型分别保存权重和结果形成可复查的比较。运行约定保留完整examples目录命令从练习根目录执行依赖沿用第12篇。02 背景同样是28×28分类难点已经改变Fashion-MNIST包含60000张训练图和10000张测试图每张为28×28灰度图共10类服装。发布方提供文件、校验和及类别说明见Fashion-MNIST作者仓库。类别包括T恤、裤子、套头衫、连衣裙、外套、凉鞋、衬衫、运动鞋、包和短靴。低分辨率下某些服装轮廓接近单靠“整体像一个形状”可能不够。这里可以沿用数字识别的数据流程但不能沿用数字类别的解释。项目必须把真实的类别映射随权重一起保存。03 实操设计一个有边界的比较实验1先下载沿用固定划分python examples/download_data.py--dataset fashion--datadata代码使用发布方GitHub数据文件作为优先镜像并保留作者原始下载站作为备用仍检查原始文件校验和。官方训练部分按类别划为约54000训练、6000验证官方10000测试保留。两个模型共用同一份索引如果缩小数据规模也共用同一份子集。2MLP先把图像展平成向量下面的模型把784个像素当作输入特征经过一个128维隐藏层再输出10个类别分数。fromtorchimportnnclassFashionMLP(nn.Module):def__init__(self):super().__init__()self.layersnn.Sequential(nn.Flatten(),nn.Linear(28*28,128),nn.ReLU(),nn.Linear(128,10))defforward(self,x):returnself.layers(x)它有101770个参数计算直接适合作为起点。但展平之后网络没有显式采用卷积中的局部连接与权重共享机制。3CNN保留二维邻域信息CNN使用第12篇的GrayCNN(classes10)两次卷积与池化后接分类头。它在不同位置重复使用卷积核有机会利用局部边缘和纹理。本版CNN有114314个参数与MLP处于相近量级但并不完全相同。因此这个实验是两个具体配置的比较不能解释成“只改变一种因素、其余完全相等”的严格结构消融。卷积带来的先验也不代表任何设置下都必然更好。训练是否充分、优化器是否合适、样本规模多大都可能改变结论。4控制能控制的条件条件本篇约定数据划分、使用数量两个模型完全相同预处理灰度浮点、统一缩放与标准化随机增强两个模型均不使用优化器Adam相同初始学习率batch size与轮数使用同一组参数批次顺序每个模型重新设置同一数据加载随机种子最优权重各自按验证损失最小选择模型初始化使用相同种子方便重复实验但不同结构不会因此得到一一对应的相同初始权重。这里先做一次可复查的比较如果要形成更可靠结论还应在多个种子下报告均值与波动。5比较指标同时查看错误样本总体准确率适合快速观察但建议同时看macro-F1和逐类召回率。某个类别预测困难时混淆矩阵能帮助定位它通常被分成哪一类。不要预先认定某几类一定混淆。先从本次的predictions.csv和错分图中找到证据再回看这些类别的轮廓、局部纹理和遮挡情况。不同模型的计算成本也值得记录。本篇输出参数量与本次总耗时总耗时包含评价和文件输出不能直接当作纯推理延迟。需要比较部署速度时应另做同设备、同批次和统一预热的测量。6从小规模检查过渡到完整比较python examples/compare_fashion.py--epochs 1--limit-train1024--limit-val256--limit-test256正式使用完整划分时python examples/compare_fashion.py--epochs 5--output artifacts/13_fashion_full一轮小样本结果主要确认两个流程都正常不能据此给出结构优劣的普遍结论。即使固定轮数相同两个模型也未必都已充分收敛应结合训练与验证曲线解释。图本篇原创比较设计图列出两个模型共享与不同的部分。04 一个具体例子一条命令训练两个模型主入口是examples/compare_fashion.py。数据只加载和划分一次再分别创建模型、重置训练随机状态并保存到独立子目录。Chapter 13: compare two models using identical splits and training budgets.importcopyfromproject_commonimportparser_for,validate_args,seed_everything,run_experiment,write_jsonfromproject_dataimportload_data,preprocessingfromproject_modelsimportbuild_modeldefmain():parserparser_for(__doc__,artifacts/13_fashion,epochs5,batch_size128)argsparser.parse_args()validate_args(parser,args)data,classes,manifestload_data(fashion,args)results{}forname,specin[(mlp,{kind:fashion_mlp}),(cnn,{kind:gray_cnn,classes:10})]:seed_everything(args.seed,args.threads)currentcopy.copy(args)current.outputargs.output/name resultrun_experiment(build_model(spec),spec,data,classes,manifest,preprocessing(fashion),current)results[name]{parameters:result[parameters],best_epoch:result[best_epoch],test_accuracy:result[test][accuracy],test_macro_f1:result[test][macro_f1]}write_json(args.output/comparison.json,results)print(results)if__name____main__:main()输出目录中的mlp与cnn分别保存最优权重、训练历史、混淆矩阵数据和预测图。顶层comparison.json汇总两者参数量、最优轮次、测试准确率与macro-F1。python examples/visualize_run.py--run artifacts/13_fashion/mlp python examples/visualize_run.py--run artifacts/13_fashion/cnn python examples/predict_image.py--checkpoint artifacts/13_fashion/cnn/best.pt--imagedata/my_clothing.png单图输入也应尽量接近数据集的灰度、背景和主体占比。真实商品照片涉及更复杂背景后面第15篇会用真实彩色图与迁移学习继续处理这种差异。公共函数和模型完整代码见配套工程及公共代码附录。本篇不填写预设的“CNN比MLP高几个百分点”比较结果以实际输出为准。05 常见问题与自测问题1给两个模型设同一个seed实验就完全公平了吗还要控制划分、样本数、预处理、训练预算和选择规则。不同结构的初始化也不会因同一个seed变成相同参数。问题2为什么这次不先给CNN加很多数据增强先让两个起点共享输入条件。后续要研究增强作用可以固定模型再单独比较有无增强。问题3参数量接近就代表计算量和显存相同吗不代表。中间特征、运算方式和输入尺寸也会影响成本不能只凭参数量判断运行速度。问题4能不能只把测试结果更好的模型叫“最佳模型”本篇报告两个已确定配置的测试结果。若还要据此不断修改和选择方案就需要保留新的独立最终评价数据。问题5测试macro-F1和Accuracy为什么不同它们统计的角度不同。macro-F1逐类计算再等权平均更容易反映具体类别的短板。06 本篇回顾与下一步这次项目增加的能力是把模型比较组织成一个可解释的实验。结果文件负责记录数值数据划分和训练约定负责让这些数值有可比较的含义。中文常见英文或写法多层感知机MLP归纳偏置Inductive Bias宏平均F1Macro-F1对照实验Controlled Comparison下一篇进入32×32彩色自然图像用适配小图的ResNet学习更复杂的特征。参考与延伸阅读Torchvision FashionMNIST接口PyTorch可复现性说明

相关推荐

从RAG链路看产业带GEO:寿光防水制造企业如何进入AI搜索的引用池
从RAG链路看产业带GEO:寿光防水制造企业如何进入AI搜索的引用池

先说结论:AI 搜索不"收录"企业,它"引用"内容。产业带企业进不了 AI 的答案,根子上的原因是公开内容里没有可供 RAG 检索和引用的结构化素材。本文以寿光防水为样本,拆解机制与做法。山东制造业的底色&#xf… · 2026/11/6 8:47:58

ChineseEcomQA: A Scalable E-commerce Concept Evaluation Benchmark for Large Language Models
ChineseEcomQA: A Scalable E-commerce Concept Evaluation Benchmark for Large Language Models

### 摘要 随着大语言模型(LLMs)在电子商务等领域的应用日益广泛,特定领域的概念评估基准对于评估其领域能力至关重要。在复杂的电子商务应用中,现有的大语言模型可能会生成与事实不符的信息。因此,有必要构建一个电子商务概念基准。现有基准面临两个主要挑战:(1)处理任… · 2026/11/6 8:46:58

Large Language Models as Attribution Regularizers for Efficient Model Training
Large Language Models as Attribution Regularizers for Efficient Model Training

### 摘要 大语言模型(LLMs)在多个领域展现出卓越性能。然而,如何有效利用其丰富知识来训练下游较小模型仍是一个有待解决的挑战,尤其在表格数据学习领域,由于可解释性和效率因素,更倾向于使用简单模型。在本文中,我们提出一种新颖且简单的方法,将大语言模型生成的全局… · 2026/11/6 8:46:58

广西贵港电工证换证怎么操作?通过率揭秘来了
广西贵港电工证换证怎么操作?通过率揭秘来了

广西贵港电工证换证怎么操作?通过率揭秘来了 证书过期了不知道怎么复审延期?你不是一个人。很多电工从业者在证书即将到期时才发现,自己对复审流程一知半解,甚至不知道从哪里下手。别急,今天我就从广西贵港电工证换证的全流程入手,详细拆解,帮你理清思… · 2026/11/6 21:15:40

杭州初级电工证报考攻略:避开中介坑,考前押题帮你稳过
杭州初级电工证报考攻略:避开中介坑,考前押题帮你稳过

杭州初级电工证报考攻略:避开中介坑,考前押题帮你稳过 你是不是正为杭州初级电工证报考发愁?不知道去哪里报名?怕被中介坑?别急,今天我就把这些年摸爬滚打的经验,一股脑儿告诉你,帮你少走弯路,考前押题也能轻松应对。… · 2026/11/6 21:15:40

电工证需要担法律?工地太忙根本没时间复习考试?怎么报名更靠谱?
电工证需要担法律?工地太忙根本没时间复习考试?怎么报名更靠谱?

电工证需要担法律?工地太忙根本没时间复习考试?怎么报名更靠谱? 工地太忙根本没时间复习考试,这几乎是每个电工师傅的心声。你不是不想考电工证,而是觉得每天连轴转,哪还有空去复习?可你知道吗, 电工证需要担法律… · 2026/11/6 21:15:40

特种工操作证在哪里办多少钱才够用
特种工操作证在哪里办多少钱才够用

特种工操作证在哪里办多少钱才够用 实操考试心里没底怕挂科,这是很多特种工报考者的真实写照。尤其是像洛阳涧西区这样的建筑工地,一线工人每天都在面对高强度的作业环境,手里如果没有一张权威的特种工操作证,不仅干不了活,甚至可能面临被清退的风险。很… · 2026/11/6 21:15:40

低压电工证建材怎么考?上岗必备材料全解析
低压电工证建材怎么考?上岗必备材料全解析

低压电工证建材怎么考?上岗必备材料全解析 证书过期了不知道怎么复审延期,这是很多低压电工证持有者的真实烦恼。特别是在建材行业,低压电工证不仅是上岗必备的门槛,更是保障安全生产的“护身符”。一旦证书过期,不仅影响正常工作,还可能面临企业辞退或… · 2026/11/6 21:15:40

杭州初级电工证报考通过率揭秘:避开这些坑,一次拿证不费力
杭州初级电工证报考通过率揭秘:避开这些坑,一次拿证不费力

杭州初级电工证报考通过率揭秘:避开这些坑,一次拿证不费力 怕考不过白交培训费?杭州初级电工证报考流程看似简单,但每年仍有大量考生因准备不足、流程不清、时间分配不当等原因被“劝退”。本文为你揭秘通过率背后的真实细节,帮你少走弯路。 ###… · 2026/11/6 21:14:40

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码