文章目录

  • 前言
  • 一、数据集
  • 二、网络结构
  • 三、测试程序

前言

借助MATLAB的deepNetworkDesigner搭一个简单的LSTM,数据集使用mnist手写数字识别数据集。


一、数据集

mnist数据集包括60000组训练数据和对应的标签,10000组测试数据和对应标签。每个数据都是一个28x28的矩阵,可以将其看做28x28像素的灰度图像(黑底白字)。而LSTM的输入应当是一个序列,我们可以把矩阵的每一行当做一帧,把图像分为28帧输入到LSTM。
数据集可以在我上传的资源里找到。

数据的格式是这样的:


XTrain,即训练图像,是一个60000x1的cell,cell的每一个元素是一个28x28的矩阵。矩阵的每一列为一帧。直接将矩阵以图片显示是这样的:

 imshow(cell2mat(XTrain(8)))


这不是某希腊字母,而是手写数字3。我们希望按行输入,而MATLAB按列读取,因此我做了个转置。再转置一下就能看到正常的图像:

 imshow(cell2mat(XTrain(8))')


标签的格式为:


可以直接通过categorical函数实现数值到categorical的转换,比如:

输入训练数据的方式不唯一,我用的只是其中一种,详情见MathWorks官网:trainNetwork

二、网络结构

使用一层128个隐藏节点的LSTM,一层全连接,输出使用softmax。网络的输入是一个序列,输出是标签,在MATLAB中,此网络可以这样描述:

layers = [ ...sequenceInputLayer(inputSize)                   %sequence输入lstmLayer(numHiddenUnits,'OutputMode','last')   %lstmfullyConnectedLayer(numClasses)                 %全连接softmaxLayer                                    %softmaxclassificationLayer];                           %label输出

三、测试程序

完整的测试程序如下:

clear
clc
%加载数据
load('.\mnist_data_mat\XTrain.mat')
load('.\mnist_data_mat\YTrain.mat')
load('.\mnist_data_mat\XTest.mat')
load('.\mnist_data_mat\YTest.mat')%设置参数
inputSize = 28;         %28个输入节点
numHiddenUnits = 128;   %128个隐藏节点
numClasses = 10;        %10种分类结果layers = [ ...sequenceInputLayer(inputSize)                   %sequence输入lstmLayer(numHiddenUnits,'OutputMode','last')   %lstmfullyConnectedLayer(numClasses)                 %全连接softmaxLayer                                    %softmaxclassificationLayer];                           %label输出options = trainingOptions('adam', ...'ExecutionEnvironment','cpu', ...'MaxEpochs',5, ...'MiniBatchSize',60, ...'GradientThreshold',1, ...'Verbose',false, ...'Plots','training-progress');net=trainNetwork(XTrain,YTrain,layers, options);    %训练Y_pred = classify(net, XTest);                      %测试
accy = sum(Y_pred == YTest) / length(YTest);        %计算准确度

准确度为97.73%
options里的参数可以修改一下,我用同样结构的网络不同的参数做出了98.74%的准确度,仍有提升空间。这里为了节省训练时间牺牲了一些精度。
训练好的网络也上传到了资源里。

使用MATLAB的trainNetwork设计一个简单的LSTM神经网络相关推荐

  1. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

  2. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

  3. 设计一个简单分页存储管理系统_【系统架构】如何设计一个简单灵活的收银系统?看这里!(1)...

    在电商项目中,收银系统是一个不可或缺的功能,因为你不仅要通过它来进行收款.退款,而且也要通过它进行财务的对账.报税等.因此,如何设计一个简单灵活的收银系统,对于开发电商项目来说非常重要. 那如何设计一 ...

  4. java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序

    利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...

  5. 大学慕课MOOC设计一个简单的计算工具

    题目: ‎编程题: ‎设计一个简单的四则运算工具,有一个标题为"计算"的窗口,窗口布局为FlowLayout.设计四个按钮,分别命名为"加"."减&q ...

  6. 如何设计一个简单的KV数据库

    下面的内容仅供设计一个简单的KV数据库.如果想要实现一个功能更强的KV数据库的话,还需要考虑:更加丰富的数据类型.数据压缩.过期机制.数据淘汰策略.集群化.高可用等功能,另外还可以增加统计模块.通知模 ...

  7. 如何设计一个简单的网页

    设计一个简单的网页 1.按住文件新建文本(Ctrl+N),设计一个网页标题,点击创建 2.在<body>内部加入所需要的标签 如图中需要标题标签,水平线标签,段落标签 3.保存(Ctrl+ ...

  8. linux logo程序设计,教你在线设计一个简单美观的LOGO

    当你配置好Linux服务器并上传网站程序到服务器上,直到架设网站成功,你可能需要一个美观的LOGO,如果你对LOGO的要求不高,可以在线自己设计一个,因为网站发展初期,你没有什么资金,请不了专业的美化 ...

  9. 设计一个简单的四则计算器

    c# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u ...

  10. 用C++设计一个简单的学籍管理系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85930262 资源下载地址:https://download.csdn.net/downl ...

最新文章

  1. HBuilder 的快捷键
  2. 04.设计模式-原型模式
  3. 细胞转染的操作步骤及注意事项
  4. 计蒜客 - Distance on the tree(LCA+主席树)
  5. js node 打包mac应用_node app 打包工具pkg的具体使用
  6. 处理2D图像和纹理——旋转,缩放和镜像一张图像
  7. Activiti(Flowable)流程克隆(运行时实例克隆)解决方案 一种订单制造中分裂与合并的核心技术实践...
  8. Power Integrations推出的全新CAPZero-3 X电容放电IC符合IEC60335标准
  9. 半导体界仙童“八叛逆”又一人去世,仅存一人!
  10. 系统集成项目管理工程师各种口诀技巧分享(1)
  11. 电脑XP系统最大支持多大内存?
  12. myeclipse破解补丁
  13. 樊登读书搞定读后感_樊登读书会《搞定》听后感
  14. 工作中常见的两种谬误
  15. 手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)
  16. 计算机应用基础 制作表格说课稿,使用Word制作表格说课稿.doc
  17. GitHub 上 22 万star的第一抢票神器,3秒钟抢到!
  18. Android 隐私数据_Android安全警告:10亿台安卓设备不再支持安全更新
  19. Python Pandas读取文件
  20. 外贸推广方式有哪些,外贸推广怎么做

热门文章

  1. 集成电路模拟版图入门-版图基础学习笔记(一)
  2. 教学案例 计算机,计算机教学案例
  3. 2020 年百度之星·程序设计大赛 - 初赛一
  4. 基于yolov5与Deep Sort的流量统计与轨迹跟踪
  5. coreseek mysql_coreseek,php,mysql全文检索部署(一)-阿里云开发者社区
  6. EditPlus 3注册 激活码
  7. 在LUA中使用异步IO的思考
  8. lcd1602c显示温度语言编程,单片机+lcd1602显示温度汇编语言程序-精确到0.0625度
  9. 《羊了个羊》创始人被母校制成展牌
  10. DIGITS安装及服务部署