(深度学习)Pytorch实现MLP并在MNIST数据集上验证

2023-11-11

Pytorch实现MLP并在MNIST数据集上验证

1.综述
2.MNIST数据集
3.代码细节说明
4.详细代码







综述

”PyTorch实现MLP并在MNIST数据集上验证“是我所上的模式识别与深度学习课程的第一个实验,主要是给我们练练手熟悉熟悉Pytorch的——如果你也是刚刚入门Pytorch,这个实验非常适合你来练手!

首先,介绍一下Pytorch:

  • Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。
  • 关于Pytorch的使用教程,可以参考StarGAN的作者写的Pytorch教程

MLP(Multilayer Perceptron):
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构。
在这里插入图片描述在这里插入图片描述




MNIST数据集

train_dataset = torchvision.datasets.MNIST(root="./data", train=True, transform=transforms.ToTensor(), download=True)

Pytorch中是可以直接使用上述语句下载MNIST数据集的,但是往往代码运行中这部分的下载十分缓慢(感谢我国著名建筑师方斌新院士 )。解决办法是手动下载MNIST数据集,可以参考这篇文章下载MNIST数据缓慢的方案

能够读取MNIST数据集后,我们便可以开始我们的具体实现了。





代码细节说明

本次实验代码主要由三个结构构成:用于训练的train.py、用于测试的test.py、用于存放MLP模型的MLP文件夹。程序执行的主体思路是:首先由train.py对构造的MLP模型在训练集上进行训练并保存相关的checkpoint,再由test.py读取checkpoint并在测试集上测试手写数字识别的准确率。

MLP模型(此处都使用了dropout训练):
  • 三层MLP模型:

在这里插入图片描述

  • 四层MLP模型:
    在这里插入图片描述

  • 五层MLP模型:

在这里插入图片描述



train.py:

  • 在train.py中,首先定义训练中需要用到的一些常量:

在这里插入图片描述

  • 接着读取并构造训练集:
    在这里插入图片描述

  • 而后构造MLP模型(dropout训练,训练阶段开启随机采样,所有模型共享参数):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9HRQmomv-1587480435217)(C:\Users\junbaba\AppData\Roaming\Typora\typora-user-images\image-20200421223402376.png)]

  • 并选择相应的loss函数以及优化算法,在此处我以交叉熵作为loss函数,并且选择了Adam(Adaptive moment estimation)算法作为优化算法:

在这里插入图片描述
在这里插入图片描述

  • 最后,训练模型并保存:

在这里插入图片描述


test.py:
  • 读取并构造测试集:

在这里插入图片描述

  • 进行测试并输出:

在这里插入图片描述



至此,我们的代码实现细节就讲完了。

最终代码运行结果:

在这里插入图片描述





详细代码

详细代码可见详细代码

需要注意的是:我的Pytorch使用的是GPU版本,如果你安装的Pytorch是CPU版本的可能无法运行。另外,我把checkpoint也保存在其中了,如果各位懒得训练(迭代次数为40次,训练起来还是比较花费时间的)可以直接load我的checkpoint。

原创不易,求赞求github打星!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(深度学习)Pytorch实现MLP并在MNIST数据集上验证 的相关文章

随机推荐

  • R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)

    终于开始攻克并行这一块了 有点小兴奋 来看看网络上R语言并行办法有哪些 赵鹏老师 R与并行计算 做的总结已经很到位 现在并行可以分为 隐式并行 隐式计算对用户隐藏了大部分细节 用户不需要知道具体数据分配方式 算法的实现或者底层的硬件资源分配
  • 关于ISP下载中 编译后自动下载代码不能执行完成的一点问题 补充keil未破解下载超范围问题

    在STC的ISP下载过程中 偶尔发现一点问题 首先在建立工程的时候没有按照自己的芯片选择 而是选择的通用型号 我在ISP中选择芯片型号后 打开串口和工程 没有提示问题 由于习惯 勾选了编译后自动下载工程 在后面的编写过程中 起初是没有问题的
  • sklearn 转换器和预估器

    刚学习sklearn时 没分清转换器的fit 和模型训练的fit 还以为是一个 结果学完了回过头来 才发现这些差异 再此记录一下 一 sklearn 转换器和预估器 转换器 Transformers 定义 转换器是一种可以对数据进行某种转换
  • 前端例程20220914:带悬停动画登陆页面

    演示 原理 对登陆框监听鼠标进入 mouseenter 和退出 mouseleave 事件 在鼠标进入时添加一个元素 并设置其扩大的动画 在鼠标退出时设置元素动画 并在动画完成后删除元素 代码
  • VUE2基础知识(详细版)

    目录 1 Vue 1 1 介绍 1 2 MVVM模型 1 3 单页面应用 SPA 2 Vue的使用 2 1 局部使用 2 2 全局使用 推荐 3 组件 3 1 介绍 3 2 说明 1 组件后缀 2 组成部分 编辑 3 步骤 4 模板语法 4
  • 创新实验_stm32_点灯_流水灯

    创新实验 stm32 点灯 流水灯 软件 步骤 实例 点灯 流水灯 软件 keil stm32cubemx proteus vscode 步骤 实例 点灯 准备 选择芯片 软件配置 编写代码 写入程序 流水灯 注意变量的位数
  • Java写一个猜数字游戏Plus

    之前我写了一个普通的猜数字游戏 那个是猜一个数字 然后提示你猜的大了还是小了 这次在学习完数组后 又来整活了 哈哈 这次写的是系统随机生成10个1 50的数字 自己去猜 不提示大了还是小了 猜出后告诉你猜中了第几个 最后把所有系统生成的随机
  • Pytorch1.4.0+cuda9.2离线安装

    由于训练机无法联网 考虑离线安装pytorch 一 确保已安装cuda和cudnn 这里我安装的是cuda9 2 cudnn7 6 5 二 安装pytorch1 4 pytorch的安装一般来说是使用conda或者pip来安装 我选择使用p
  • 集成电路相关书籍

    注 从此开始 文中提到的书籍都会在公众号对应文章末尾给出链接 不需要在微信后台获取 当然还是可以通过在微信后台回复相关书名获取对应的电子书 在后台看到很多人回复集成电路相关的一些书籍 所以本文就提供一些书籍 书籍链接在公众号本文文末直接获取
  • 数学建模常见模型算法归纳总结

    一 常见模型汇总 在数学建模中 根据具体问题的特点和要求 选择合适的模型和算法是非常重要的 同时需要根据实际情况进行调整和优化 以得到合理和可行的解决方案 二 数学建模四大模型 在数学建模中 通常将数学模型按照其应用目标和任务的不同划分为四
  • 如何重写equals方法

    重写equals方法 我们都知道 如果不对equals方法进行重写的话 那么它默认比较的就是两个对象的地址值是否是一样的 但是我们往往需要比较的是对象的内容是否是一样的 除了几个内置重写了equals方法的类型 我们写的bean一般都要自己
  • python网络爬虫方向的第三方库是_测验9: Python计算生态纵览 (第9周)

    测验9 Python计算生态纵览 第9周 单项选择题 1 以下选项不是Python数据可视化方向第三方库的是 A Matplotlib B Seaborn C Mayavi D Pyramid 正确答案 D Pyramid是Web开发框架库
  • Web自动化测试05:Selenium-CSS定位

    系列文章目录 软件测试功能到自动化学习路线图 2022年最新版技术栈 软件测试01 从了解测试岗位职能和测试流程开始 附作业 软件测试02 6大实际案例手把手教你设计测试点 软件测试03 用例执行以及缺陷管理的学习 附禅道下载使用流程 软件
  • 常用相机投影及畸变模型(针孔

    常用相机投影及畸变模型 1 背景 2 针孔相机投影模型及其畸变模型 2 1 缩略词和术语 2 1 世界坐标系到像素坐标系 2 2 针孔相机模型 2 2 1 世界坐标系到相机坐标系 2 2 2 相机坐标系到像素坐标系 2 3 综述 2 4 内
  • alook浏览器哪个好 夸克浏览器_简单搜索、X浏览器、夸克浏览器、Via几款极简浏览器,到底哪个最好用?...

    1 X浏览器 用过的都说X浏览器的广告拦截很强悍 大小 0 8M 无开屏页 只有安卓版本 用过 Chrome 的 都说X浏览器是好的备胎 无新闻 无推送 无后台 不足1M却小而强大 给你淋漓尽致的浏览体验 极简干净整洁的界面交互 无新闻 无
  • Android获取View宽高的几种方式

    有时我们会有基于这样的需求 当Activity创建时 需要获取某个View的宽高 然后进行相应的操作 但是我们在onCreate onStart中获取View的大小 获取到的值都是0 只是由于View的绘制工程还未完成 和在onCreate
  • 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。

    问题描述 对于长度为5位的一个01串 每一位都可能是0或1 一共有32种可能 它们的前几个是 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串 输入格式 本试题没有输入 输出格式 输出32行
  • [极客大挑战 2019]RCE ME 1

    极客大挑战 2019 RCE ME 1 首先打开题目得到 发现是代码审计 传入的code不能大于40 并且不能包含a到z的大小写字符和1到10的数字 我们可以通过不在这个字符集里的字符进行绕过 可以采用异或和取反 这里我采用取反 绕过 执行
  • 如何画好『数据流图』和『业务流程图』

    前言 数据流图 Data Flow Diagram DFD 是一种便于用户理解和分析系统数据流程的图形工具 他摆脱了系统和具体内容 精确的在逻辑上描述系统的功能 输入 输出和数据存储等 是系统逻辑模型的重要组成部分 一 数据流图组成部分 数
  • (深度学习)Pytorch实现MLP并在MNIST数据集上验证

    Pytorch实现MLP并在MNIST数据集上验证 1 综述 2 MNIST数据集 3 代码细节说明 4 详细代码 综述 PyTorch实现MLP并在MNIST数据集上验证 是我所上的模式识别与深度学习课程的第一个实验 主要是给我们练练手熟