这是一个入门机器学习和深度学习的小项目,以fashion-mnist数据为基础。分别利用机器学习(随机森林)和深度学习(多层感知机/卷积神经网络)方法进行训练。完整的包含数据读取,数据处理,训练, 验证,loss曲线的绘制,训练过程的可视化,模型推理,混淆矩阵的计算,特征图可视化等。因为最近总是会带一些学弟学妹入门,前段时间了解到这个数据集,感觉麻雀虽小五脏俱全,真的是一个很好的入门项目,把这一套搞明白了,做复杂的项目也都是水到渠成。于是乎花了点时间,找了些代码然后修改了一些,完善了很多的构件,这里当做一个记录吧!关于代码已经尽我所能的注释得很清楚了。完整的代码我已经上传github上面,并且readme里面会有使用方法:

DLLXW/Fashion-MNIST​github.com

数据集介绍

Fashion-mnist可以看作经典MNIST数据的加强版,号称计算机视觉领域的Hello, World,这里暂不作过多介绍。下面是数据集的github链接:

zalandoresearch/fashion-mnist​github.com

用于训练的图片有6w张,用于验证的图片有1w张,每一个样本是一张28x28像素的图像。总共10中服饰类别。所以问题是一个10分类的问题

训练随机森林模型

首先利用机器学习方法来进行一下该分类任务,这里选取随机森林.

需要提前安装的库为:sklearn

准备数据:

事实上很多机器学习库都已经集成了该数据集,也就是说可以在代码里面直接导入,但这里推荐自己手动下载下来。到上面的github链接页面,找到:

下载数据集并且解压到自己的目录下

譬如我的数据格式组织如下:

数据集都解压到了raw文件夹。下面是实现用随机森林训练,验证,并且打印多分类混淆矩阵和分类信息的代码。

import 

这里稍微解释下多分类的混淆矩阵,对于二分类很好理解,多分类的混淆矩阵其实也是在二分类的基础上进行的,基本思想是:当研究其中的一类时,其余的各个类别都当做负类。

上面随机森林是一个经典的机器学习算法,以此作为例子对fashion-mnist数据集进行了分类。如果想换成其它的模型,也很容易,只需要简单的修改上面的几行代码。

Pytorch构建多层感知机和卷积神经网络进行分类

下面介绍一下如何构建一个多层的神经网络(多层感知机MLP)已经卷积神经网络来进行分类。这里用pytorch进行构建。这里给出的网络的构建代码,完整代码请参考github

#这里其实是构建一个最简单经典的神经网络

模型训练/验证

下面给出训练/验证部分代码,主要分为训练的参数设置;数据集加载;训练过程和验证过程;利用tensorboard实现训练过程的可视化,网络结构可视化等。

def 

模型推理

首先说明说明叫推理(infer):前面我们已经训练好了模型,同时也已经保存好了我们的模型(xxx.pt)。同时我们还在训练的过程中就验证(测试)了我们的模型训练效果;现在我们有了一张新图片,需要送给模型,让模型判断是属于哪个类别,这个过程就叫做模型的infer。

所以推理的前提是需要从保存的模型里面加载模型,同时要注意的是我们之前保存的只是模型的权重,并未保存模型的结构,所以还得导入前面定义的模型结构,然后将这些权重附着在网络的结构(骨架)之上。

#

最后贴上一些模型训练可视化的效果图

完整项目已经上传github

DLLXW/Fashion-MNIST​github.com

在readme里面有使用说明!!!希望大家素质三连

No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...相关推荐

  1. 深度学习练手项目(一)-----利用PyTorch实现MNIST手写数字识别

    一.前言 MNIST手写数字识别程序就不过多赘述了,这个程序在深度学习中的地位跟C语言中的Hello World地位并驾齐驱,虽然很基础,但很重要,是深度学习入门必备的程序之一. 二.MNIST数据集 ...

  2. 深度学习-Pytorch:项目标准流程【构建、保存、加载神经网络模型;数据集构建器Dataset、数据加载器DataLoader(线性回归案例、手写数字识别案例)】

    1.拿到文本,分词,清晰数据(去掉停用词语): 2.建立word2index.index2word表 3.准备好预训练好的word embedding 4.做好DataSet / Dataloader ...

  3. 深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)

    目录 基础理论 一.训练CNN卷积神经网络 1.载入数据 2.改变数据维度 3.归一化 4.独热编码 5.搭建CNN卷积神经网络 5-1.第一层:第一个卷积层 5-2.第二层:第二个卷积层 5-3.扁 ...

  4. 深度学习--TensorFlow(项目)Keras手写数字识别

    目录 效果展示 基础理论 1.softmax激活函数 2.神经网络 3.隐藏层及神经元最佳数量 一.数据准备 1.载入数据集 2.数据处理 2-1.归一化 2-2.独热编码 二.神经网络拟合 1.搭建 ...

  5. 【不看后悔系列—小白手册】超实用Python入门指南!包括学习思维导图

    Python现在非常火,语法简单而且功能强大,现在有很多非专业人士都想学Python!最近有很多小伙伴问我,如何才能自学成为 Python 大牛?根据自己多年大厂工作经验,我总结了几点小建议,直接上干 ...

  6. 小白初学游戏建模怎么入门,该如何学习?十年建模师为你解答

    首先几个软件要弄明白:Maya 3Dmax Zb Sp Maya:掌握人物建模,简模,高模,精模,游戏道具(同样高低精模),拆分uv,画贴图(有几款画贴图的软件都不错,新手推3d coat) Subs ...

  7. 从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现

    卷积神经网络(CNN)实现 背景 卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇. 神经网络实现思路 "扔掉神经 ...

  8. 研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)

    你在服务器上跑过代码吗?哇~你跑过!是啥样的...每回见别人跑都会问并且羡慕会在大服务器上跑代码的哈哈哈在研究生刚开学前还甚至不知道什么是服务器,更是无法想象在除了自己能看得见摸得着的电脑屏幕之外跑代 ...

  9. python如何创建工程预设_如何在sublime3项目设置中设置python模块的搜索路径?ImportError: No module named *的解决办法...

    问题:之前使用pycharm,用的挺溜,但是电脑配置实在不争气,pycharm启动久了,耗去大量内存,导致运行起来越来越慢,于是转向使用sublime text. 把项目从pycharm切换到subl ...

最新文章

  1. Java项目:在线小说阅读系统(读者+作者+管理员)(java+SSM+jsp+mysql+maven)
  2. 不讲嫖德?这些年接触/使用的网页剪辑工具小汇总大总结
  3. JSP简单练习-网站计数器
  4. VSCode中怎么改变文件夹的图标
  5. #开工新姿势#开启一年新征程,云社区叫你来充电啦!
  6. 我对C++的一些疑问
  7. Java线程—如何解决Swing的单线程问题-----------Swing线程机制
  8. LeetCode第12题 整数转罗马数字
  9. Zemax操作24--高斯光束的聚焦和传播
  10. 【干货分享】花坊类字体设计思路
  11. 英语口语收集(十九)
  12. 【ERROR】Error: Error trying to upgrade business network. Error: No valid responses from any peers.
  13. 奇安信渗透测试面试题库_奇安信面试经验
  14. 关于Visual Studio 中“scanf”输入报错的解决方法
  15. python与开源gis_GitHub - geodoer/GISandPython: 开源GIS与Python
  16. 182_赵陈雄_java核心编程实验
  17. 【自学Python】Python类型转换
  18. 计算机三级网络技术分值占比,全国计算机等级考试三级考试题型及分值比例
  19. mac实用小技巧之解压.xip文件
  20. java中反射机制的含义_java的反射是什么意思?

热门文章

  1. STL源代码分析(ch 1)概述
  2. 差分能量分析介绍(一)
  3. java练气期(1)----java高级(JDBC)
  4. 解决VMware虚拟机安装的ubuntu显示屏幕小的问题
  5. 算法—详细讲解单向链表的实现(python)
  6. django中序列化、反序列化过程
  7. 03-Arm SiP Services
  8. 专题目录20211013-ongoing
  9. C++简单使用priority_queue
  10. [保护模式]段间跳转和跨段跳转