基于神经网络的分类设计——模式识别实验

一、实验意义及目的

  1. 卷积神经网络是深度学习的基本工具,本实验要求学生掌握常用神经网络算法原理,能够利用Matlab创建和训练简单的卷积神经网络来进行深度学习分类。

  2. 软件要求Matlab2018a及以上版本(18a版本开始提供Deep Learning Toolbox的工具箱,正式拉开了Matlab进军深度学习领域的序幕)。

二、实验内容

创建简单的深度卷积神经网络用于图像分类。

三、实验过程

1.加载和浏览图像数据。
2.定义网络架构。
3.指定训练选项。
4.训练网络。

四、实验说明与代码

加载数字样本数据作为图像数据存储。imageDatastore根据文件夹名称自动标注图像,并将数据存储为ImageDatastore对象。通过图像数据存储可以存储大图像数据,包括无法放入内存的数据,并在卷积神经网络的训练过程中高效分批读取图像。

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath,'IncludeSubfolders',true,'LabelSource','foldernames');

显示数据存储中的部分图像。

figure(1);
perm = randperm(10000,20);
for i = 1:20
    subplot(4,5,i);
    imshow(imds.Files{perm(i)});
end

图 1 随机展示的图片数据

labelcount = countEachLabel(imds);%计算每一个类别中的图像数量
img = readimage(imds,1);%在网络的输入层中指定图像的大小
numTrainFiles = 900;%将数据集划分为训练集和测试集,训练集的每个类别包含900个图像
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
 
%定义卷积神经网络
layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,8,'padding','same')
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'stride',2)
    
    convolution2dLayer(3,16,'padding','same')
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'stride',2)
    
    convolution2dLayer(3,32,'padding','same')
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];
%指定训练选项  
%学习率设置为0.04,训练轮数设置为10,每轮迭代次数为70
options = trainingOptions('sgdm',...
    'InitialLearnRate',0.04,...
    'MaxEpochs',10,...
    'Shuffle','every-epoch',...
    'ValidationData',imdsValidation,...
    'ValidationFrequency',70,...
    'Verbose',false,...
    'Plots','training-progress');
%使用训练数据训练网络

```python
net = trainNetwork(imdsTrain,layers,options);
%对验证图像进行分类并计算准确度
YPred = classify(net,imdsValidation);
YValidation  = imdsValidation.Labels;
 
accuracy = sum(YPred == YValidation)/numel(YValidation);

运行结果:

图 2 运行结果-1
在这里插入图片描述

图 3 运行结果-2

在这里插入图片描述

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值