[matlab]MATLAB实现MLP多层感知机minist手写识别预测

【测试环境】

matlab2023a

【源码文件截图】

【实现部分代码】

mlp_test.m

%% MLP 2-layer to test XOR
clear;
clc;Mode = 'MNIST'
%Mode = 'XOR'if (strcmp(Mode,'MNIST'))% Load the digits into workspace (MNIST Test, from% http://yann.lecun.com/exdb/mnist/)num_train = 1000;[train_IMG,train_labels,test_IMG,test_labels] = readMNIST(num_train);input =cell(num_train,1);output =cell(num_train,1);test_input=cell(length(test_IMG),1);test_output=cell(length(test_labels),1);for i=1:num_train%input_img = double(train_IMG{i});%Pre processing - prewittinput_img = edge(train_IMG{i},'prewitt');[width height] = size(input_img);img_vec = reshape(input_img,1,width*height);input{i}=double(img_vec);labels_arr = zeros(1,10);labels_arr(train_labels(i)+1)=1;output{i} = labels_arr;endfor i=1:length(test_input)%input_img = double(test_IMG{i});%Pre processing - prewittinput_img = edge(test_IMG{i},'prewitt');[width height] = size(input_img);img_vec = reshape(input_img,1,width*height);test_input{i} = double(img_vec);labels_arr = zeros(1,10);labels_arr(test_labels(i)+1)=1;test_output{i} = labels_arr;end
elseif (strcmp(Mode,'XOR'))num_train = 4;input =cell(num_train,1);output =cell(num_train,1);input{1} = [0 0];input{2} = [0 1];input{3} = [1 0];input{4} = [1 1];output{1} = [0];output{2} = [1];output{3} = [1];output{4} = [0];endif (length(input)~=length(output))error('len_input does not equal to len_output');
end%% Determine # of nodes in hidden layer & output layer
num_node_il = length(input{1});
%num_node_hl = [num_node_il*2];
num_node_hl = [num_node_il];
num_node_ol = length(output{1});set_node =[num_node_il num_node_hl num_node_ol];%% Init. template (random)
rand('state',sum(100*clock));num_layer = length(set_node);
W=cell(num_layer-1,1);
B=cell(num_layer-1);for i=1:num_layer-1%% [Xavier10] shows that the interval ~ from https://deeplearning.net/tutorial/mlp.htmlmin_W = -4*sqrt(6/(set_node(i)+set_node(i+1)));max_W = 4*sqrt(6/(set_node(i)+set_node(i+1)));W{i} = min_W+(2*max_W).*rand(set_node(i),set_node(i+1));B{i} = rand(1,set_node(i+1));
end%% Learning coeff = 0.7 & Iteration = 10% 141108, Success rate = 0.725
%lrn_rate = 0.3;
%max_iter = 100;lrn_rate = 0.3;
max_iter = 50;%最大迭代次数,越大训练时间越长精度越高ticAct=cell(num_layer,1);
Err=cell(num_layer-1,1);err_trace=[];for index_inter= 1:max_iterif mod(index_inter,50) ==0index_interendAct_trace=[];Train_trace = [];for j= 1:num_trainP = randperm(num_train);train_input = input{P(j)};train_output = output{P(j)};% Forward Propagation[Act]   		=   FP(train_input,Act,W,B,num_layer);% Backward Propagation & Template update[W,B,Err]       =   BP(train_output,Act,W,B,num_layer,lrn_rate,Err);% Debug[row,col]=find(Act{end}==max(Act{end}));Act_trace(end+1)=col-1;[row,col]=find(train_output==max(train_output));Train_trace(end+1)=col-1;end   All_arr(index_inter).act = Act_trace;All_arr(index_inter).train=Train_trace;All_arr(index_inter).err = Act_trace-Train_trace;
endtocsave
disp('Training Ends')if (strcmp(Mode,'XOR'))grid = [0:0.01:1];Z=-1*ones(length(grid),length(grid));for i=1:length(grid)for j=1:length(grid)test = [grid(i) grid(j)];Act_new = FP(test,Act,W,B,num_layer);Z(i,j) = Act_new{3};endend[X,Y] = meshgrid(grid);mesh(X,Y,Z)elseif (strcmp(Mode,'MNIST'))Guess_arr = [];for i=1:length(test_input)[guess_result] = FP(test_input{i},Act,W,B,num_layer);[row,col]=find(guess_result{end}==max(guess_result{end}));Guess_arr(end+1)=col-1;end
endZ=zeros(10,10);for i =1:length(test_labels)Z(Guess_arr(i)+1,test_labels(i)+1)=Z(Guess_arr(i)+1,test_labels(i)+1)+1;
endAbs_err = Guess_arr-double(test_labels)';
success_rate = sum(Guess_arr-double(test_labels)'==0)/1000
%plot(abs(Guess_arr-double(test_labels)'))%figure(1);scatter((Guess_arr*10),test_labels)
%figure(2);plot(err_trace);

 运行结果:

【源码下载地址】 https://download.csdn.net/download/FL1623863129/88600486

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407966.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么要构建自己的 AI 代理库

上个月,我开始深入研究 AI 代理的世界。在探索这个领域时,我突然有了灵感:从现在开始我要研究 AI 代理。 最近,我一直在思考第二点。既然有很多可用的选项,为什么还要开发自己的 AI 代理库呢? 经过一番思…

SCI论文系统各阶段状态含义,一文带你全面掌握!告别投稿小白!

知识小站 SCI(Science Citation Index,科学引文索引)是由美国科学信息研究所(Institute for Scientific Information, ISI)创建的一个引文数据库。它收录了全球各学科领域中最具影响力的学术期刊,涵盖自然…

PyTorch深度学习模型训练流程的python实现:回归

回归的流程与分类基本一致,只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下: 注意:预测值与真实值图像处理为按真实值排序,图中呈现…

OCR识别行驶证(阿里云和百度云)

OCR识别行驶证(阿里云和百度云) 一、使用场景 1、通过识别行驶证,获取相关汽车信息,替代手输 二、效果图 三、代码部分: 1、阿里云OCR 1.1、控制层 PostMapping("/ocrCard") public JSONObject ocrCard(RequestPart("fi…

快速入门:使用Python构建学生成绩管理应用

前言 诸位观众,本学期我有幸学习了Python编程课程。随着课程的结束,授课教师布置了一项任务,要求我们开发一个学生信息管理系统。基于老师的要求,我个人独立完成了这项任务。今天,我希望将这个简易的程序分享给大家&a…

【数字三角形】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 510; int f[N][N]; int a[N][N]; int main() {int n;cin >> n;for(int i 1; i < n; i){for(int j 1; j < i; j){cin >> a[i][j];if(i 1 && j 1) f[i][j] a[i][j];el…

ORCAD Capture CIS 打开原理图总是卡住

原因&#xff1a;ORCAD自动进行了DRC检查。要打开的原理图中footprint未指定footprint路径。 修改&#xff1a;1、第一种方法&#xff1a;指定footprint路径 2、第二种方法&#xff1a;关闭在线DRC检查

钢包智慧管理平台

钢包智慧管理平台基于海康、大华视频监控&#xff0c;实现对钢包的全动态管理&#xff0c;实时检测钢包的温度数据变化&#xff0c;也可以随时查询时间区间内的钢包温度数据变化。 平台基于springboot vue前后台分离技术开发&#xff0c;视频基于zlmedia的转码拉流。实现了视频…

STM32————SPI硬件外设实现读写

首先是理论知识&#xff1a; 常用8位数据帧、高位先行 SPI的时钟由PCLK内部时钟分频得来&#xff0c;最大可到36MHz 精简为半双工就是去掉一根数据线后&#xff0c;用剩下的一根作为发送/接收数据&#xff1b;单工就是去掉接收线&#xff0c;只用发送线进行发送数据&#xf…

揭秘CAAC、AOPA、ALPA、ASFC和UTC无人机执照的差别及实用价值

CAAC、AOPA、ALPA、ASFC和UTC无人机执照各有其独特的差别及实用价值&#xff0c;以下是针对这些执照的详细解析&#xff1a; 一、CAAC无人机执照 颁发机构&#xff1a;中国民用航空局&#xff08;CAAC&#xff09; 差别&#xff1a; - 权威性&#xff1a;CAAC无人机执照是目…

Java面试题--JVM大厂篇之JVM 大厂面试题及答案解析(2)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到我的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客&…

Leetcode 1108. IP地址无效化

Leetcode 1108. IP 地址无效化 问题&#xff1a;给你一个有效的 IPv4 地址address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 "[.]" 代替了每个 "."。 方法1&#xff1a;对字符串挨个进行判断&#xff0c;如…

http连接未释放导致生产故障

凌晨4点运维老大收到NAT网关连接数打满报警&#xff08;官网页面接口超时&#xff09;&#xff0c;运维自己先看了看服务器相关配置&#xff0c;先后还联系了阿里云的客服&#xff0c;客服建议升级NAT网络连接阈值&#xff0c;之前是1w升级到了5w&#xff0c;但后来还是给研发打…

安装torchvision==0.5.0

安装pytorch 1.4 但是在当前配置的镜像源中找不到 torchvision0.5.0 这个版本的包。 直接找资源下载 网址添加链接描述 直接运行该命令&#xff0c;成功。 然后重复运行上面的命令就可以了 # CUDA 9.2 conda install pytorch1.4.0 torchvision0.5.0 cudatoolkit9.2 -c pyto…

Python编码系列—Python单元测试的艺术:深入探索unittest与pytest

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

CS1.5快捷键

《黑神话悟空》玩不起&#xff0c;玩起了23年前的cs1.5 B11&#xff1a;USP(警察自带手枪&#xff09; B12&#xff1a;Glock18(匪徒自带手枪) B13&#xff1a;Desert Eagle&#xff08;沙漠之鹰&#xff09; B14&#xff1a;P-228 B15&#xff1a;Dual Berettas&#xff08;匪…

linux中对.jar文件的配置文件进行修改

linux中对.jar文件的配置文件进行修改 第一步&#xff0c;进入你的.jar的当前文件夹 第二步 &#xff0c;编辑你指定的 .jar 文件 编辑之前请先备份 cp xxx.jar xxx-1.2.jar 输入编辑命令 vim xxx.jar第三步&#xff0c;找到你要编辑的文件 输入命令进入vi模式&#xff08;…

金蝶云星空开发简单账表《物料年采购入库报表》

文章目录 业务背景业务需求方案设计详细设计测试业务背景 系统现有功能不支持查询过去一年内所有物料的入库数,需要人工导出,然后再汇总。 业务需求 可以查询所有物料的入库数,多个物料,单个物料,多个组织,单个组织的入库数,以及支持查询入库数大于某个阈值。 方案设…

Unity教程(十一)使用Cinemachine添加并调整相机

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

一文彻底搞懂CNN - 模型架构(Model Architecture)

CNN Model Architecture CNN&#xff08;卷积神经网络&#xff09;的模型架构由输入层、卷积层、池化层以及全连接层组成&#xff0c;通过卷积操作提取图像特征&#xff0c;并通过池化减少参数数量&#xff0c;最终通过全连接层进行分类或回归。 输入层&#xff1a;接收原始图…