首页 > 数据库 >基于mnist手写数字数据库的深度学习网络训练和数字识别matlab仿真

基于mnist手写数字数据库的深度学习网络训练和数字识别matlab仿真

时间:2023-04-04 16:24:53浏览次数:43  
标签:fp 数字 卷积 学习 神经网络 matlab 深度 images mnist

1.算法描述

        MNIST数据集(Mixed National Institute of Standards and Technology database)是美国国家标准与技术研究院收集整理的大型手写数字数据库,该 数据集包含 60000  个于训练的样本和 10000  个于测试的样本,图像是固定⼤小 (28x28 像素 ),每个像素的 值为0 到 255,通道数为 1(灰度图), 如下图所示:

 

 

 

 

 

 

对于mnist数据库,通过如下matlab程序进行读取:

 

function images = loadMNISTImages(filename)
%loadMNISTImages returns a 28x28x[number of MNIST images] matrix containing
%the raw MNIST images
 
fp = fopen(filename, 'rb');
assert(fp ~= -1, ['Could not open ', filename, '']);
 
magic = fread(fp, 1, 'int32', 0, 'ieee-be');
assert(magic == 2051, ['Bad magic number in ', filename, '']);
 
numImages = fread(fp, 1, 'int32', 0, 'ieee-be');
numRows = fread(fp, 1, 'int32', 0, 'ieee-be');
numCols = fread(fp, 1, 'int32', 0, 'ieee-be');
 
images = fread(fp, inf, 'unsigned char');
images = reshape(images, numCols, numRows, numImages);
images = permute(images,[2 1 3]);
 
fclose(fp);
 
% Reshape to #pixels x #examples
images = reshape(images, size(images, 1) * size(images, 2), size(images, 3));
% Convert to double and rescale to [0,1]
images = double(images) / 255;
 
end

 

  

 

train_images:uint8 具有形状的灰度图像数据的 NumPy 数组(60000, 28, 28),包含训练数据。像素值范围从 0 到 255。

 

train_labels:uint8 NumPy 数字标签数组(0-9 范围内的整数)与形状(60000,)对于训练数据。

 

test_images:uint8 NumPy 灰度图像数据数组,形状为 (10000, 28, 28),包含测试数据。像素值范围从 0 到 255。

 

test_labels:uint8 NumPy 数字标签数组(0-9 范围内的整数)与形状(10000,)为测试数据。

————————————————

 

   深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。

       深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。

       深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。

 

      卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前 馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)” 。

对卷积神经网络的研究始于二十世纪80至90年代,时间延迟网络和LeNet-5是最早出现的卷积神经网络 [4]  ;在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域   。

卷积神经网络仿造生物的视知觉(visual perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求 。

 

 

 

 

         深度学习是机器学习的一种,而机器学习是实现人工智能的必经路径。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。研究深度学习的动机在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本等。含多个隐层的深度学习模型

        从一个输入中产生一个输出所涉及的计算可以通过一个流向图(flow graph)来表示:流向图是一种能够表示计算的图,在这种图中每一个节点表示一个基本的计算以及一个计算的值,计算的结果被应用到这个节点的子节点的值。考虑这样一个计算集合,它可以被允许在每一个节点和可能的图结构中,并定义了一个函数族。输入节点没有父节点,输出节点没有子节点。

        这种流向图的一个特别属性是深度(depth):从一个输入到一个输出的最长路径的长度。 传统的前馈神经网络能够被看作拥有等于层数的深度(比如对于输出层为隐层数加1)。SVMs有深度2(一个对应于核输出或者特征空间,另一个对应于所产生输出的线性混合)。

        人工智能研究的方向之一,是以所谓 “专家系统” 为代表的,用大量 “如果-就”(If - Then)规则定义的,自上而下的思路。人工神经网络(Artificial Neural Network),标志着另外一种自下而上的思路。神经网络没有一个严格的正式定义。它的基本特点,是试图模仿大脑的神经元之间传递,处理信息的模式。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

3.MATLAB核心程序

 

addpath minFunc/
autoencoderOptions.Method = 'lbfgs';  % Here, we use L-BFGS to optimize our cost
                                      % function. Generally, for minFunc to work, you
                                      % need a function pointer with two outputs: the
                                      % function value and the gradient. In our problem,
                                      % sparseAutoencoderCost.m satisfies this.
autoencoderOptions.maxIter = 400;	  % Maximum number of iterations of L-BFGS to run 
autoencoderOptions.display = 'on';
 
if exist('opttheta.mat','file')==2
    
    load('opttheta.mat');
 
else
[opttheta, cost] = minFunc( @(p) sparseAutoencoderCost(p, ...
                                   inputSize, hiddenSize, ...
                                   lambda, sparsityParam, ...
                                   beta, unlabeledData), ...
                              theta, autoencoderOptions);                        
save('opttheta.mat','opttheta');
end             
% Visualize weights
W1 = reshape(opttheta(1:hiddenSize * inputSize), hiddenSize, inputSize);
display_network(W1');
 
trainFeatures = feedForwardAutoencoder(opttheta, hiddenSize, inputSize, ...
                                       trainData);
testFeatures = feedForwardAutoencoder(opttheta, hiddenSize, inputSize, ...
                                       testData);
softmaxOptions.maxIter = 100;
lambdaSoftmax = 1e-4; % Weight decay parameter for Softmax
trainNumber = size(trainData,2);
% softmaxTrain 默认数据中已包含截距项
softmaxModel = softmaxTrain(hiddenSize+1, numLabels, lambdaSoftmax, [trainFeatures;ones(1,trainNumber)], trainLabels, softmaxOptions);  % learn by features
testNumber = size(testData,2);

 

  

 

标签:fp,数字,卷积,学习,神经网络,matlab,深度,images,mnist
From: https://www.cnblogs.com/51matlab/p/17286802.html

相关文章

  • 企业数字化转型的微仓智能存取系统
    尽管很多企业意识到数字化转型的必要,但是摆在我们眼前的仍是残酷现实,多少家企业口口声声说要转型,实则多在“纸上谈兵”:或迷茫无助,不知从何下手;或敷衍塞责,只做表面文章;亦或是认知偏差,在错误的道路上一骑绝尘;再或者,面对转型需要的早期资金投入,许多企业望而生畏。企业的数字化转型首先......
  • 一文吃透信息化、数字化、智能化……别再傻傻分不清楚
    新技术、新产业、新业态的不断出现,各行各业都在寻找新的突破口进行转型升级,“信息化、数字化、智能化”愈来愈频繁地出现在大众视野中,关于它们概念和解说也是层出不穷、百花齐放,到底它们之间有什么区别呢?先给出结论:信息化≠数字化≠智能化,这是三种不同的概念01、三者概念区分:l......
  • c++ 数字和string 类型的相互转换
    C++数字和string类型的相互转换数字转为string1.std::to_string()函数//Definedinheader<string>std::stringto_string(intvalue);//(sinceC++11)std::stringto_string(longvalue);//(sinceC++11)std::stringto_str......
  • 常用性能数字(一)
    一、前言对于性能工程师来说,常见系统的性能数据量级需要烂熟于心,记住这些数字的好处是,每次看到一个性能相关的数据的时候,我们立刻就能知道这个性能数据有没有问题。举个简单例子,如果我们看到一个硬盘的IO读写延迟经常在500毫秒左右,我们立刻就知道这里面有性能问题。反之,如果硬......
  • ECE 4514 数字设计
    ECE4514:DigitalDesignIISpring2023Thiscourseisdevotedtoadvanceddigitaldesigntechniquesfordevelopingcomplexdigitalcircuits.Itemphasizessystem-levelconceptsandhigh-leveldesignrepresentationsthatalsomeetparticulardesignconstr......
  • MATLAB读写excel中指定sheet行列中的数据 and 去除含有NaN的行或者列
    matlab读写excel中指定sheet行列中的数据data=xlsread('data.xlsx','sheet1','c2:c12');xlswrite('newdata.xlsx',newdata,'Sheet1','p2:p12');matlab中去除含有NaN的行或者列b=a(all(~isnan(a),2),:);%删除含有NAN的行b=a(al......
  • 【开源项目】合肥~超经典智慧城市CIM/BIM数字孪生可视化项目—开源工程及源码
     最新消息,数字孪生智慧宁波开源了其数据工程源码和工程,免费送出供大家学习、使用、分享。​智慧宁波实现了一系列全面的功能,如实现长三角经济圈特效、智慧地铁特效、智慧灯杆特性等。这些项目利用数字孪生技术和物联网等先进技术,可以实现精细化管理和智能控制,提高城市管理效率......
  • JS正则判断6位数字
    JS正则判断6位数字原文链接:https://zhidao.baidu.com/question/56711626.html正则表达式:^\d{6}$注意写法,javascript里正则表达式的写法为/^\d{6}$/,其它的都为"^\d{6}$"。<scriptlanguage="javascript">functioncheckfrom(){varnum=document.getElementById("text&qu......
  • 华为云GaussDB践行数字化,护航证券保险高质量发展
    摘要:华为云数据库解决方案架构师章哲在由先进数通与华为联合开展的“7+1”系列银行业数字化转型实践交流活动上围绕华为云GaussDB多年来的技术探索和应用实践进行了分享。近日,由先进数通与华为联合开展的“7+1”系列银行业数字化转型实践交流活动北京站圆满落幕。活动汇聚金融科技......
  • 展会回顾丨计讯物联5G智能网关引领数字化未来,加速数智转型
    3月24日,在厦门市工业和信息化局及火炬高新区的支持下,5G+工业互联网论坛活动及工业互联网供需对接会于厦门火炬新科广场隆重举行。本次论坛以“5G赋能企业智造引领未来”为主题,通过协同供需对接的形式,搭建面对面供需对接会的交流平台,为企业提供线下展示、宣讲、对接、洽谈等场景,形......