%% 基于深度学习网络的数字分类
%创建和训练简单的卷积神经网络来进行深度学习分类
%加载和浏览图像数据。
%定义神经网络架构。
%指定训练选项。
%训练神经网络。
%预测新数据的标签并计算分类准确度。
%% 加载和浏览图像数据
%使用 imageDatastore 函数将位数数据加载为图像数据存储,并指定包含图像数据的文件夹。通过图像数据存储可以存储大图像数据,包括无法放入内存的数据,并在卷积神经网络的训练过程中高效分批读取图像。
dataFolder = "DigitsData";
imds = imageDatastore(dataFolder, ...
IncludeSubfolders=true, ...
LabelSource="foldernames");
%显示数据存储中的部分图像。
figure(1)
tiledlayout("flow");
perm = randperm(10000,20);
for i = 1:20
nexttile
imshow(imds.Files{perm(i)});
end
%计算每个类别中的图像数量。
%数据存储包含数字 0-9 的总共 10000 个图像,每个数字对应 1000 个图像。您可以在神经网络的最后一个全连接层中指定类数作为 OutputSize 参量。
classNames = categories(imds.Labels);
labelCount = countEachLabel(imds)
%检查 digitData 中第一个图像的大小
%每个图像的大小均为 28×28×1 像素。
img = readimage(imds,1);
size(img)
%% 指定训练集和验证集
%将数据划分为训练数据集和验证数据集,以使训练集中的每个类别包含 750 个图像,并且验证集包含对应每个标签的其余图像。
%splitEachLabel 将数据存储 imds 拆分为两个新的数据存储 imdsTrain 和 imdsValidation。
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,"randomize");
%% 定义神经网络架构
%图像输入层 imageInputLayer 用于指定图像大小
%卷积层在卷积层中,第一个参量是 filterSize,它是训练函数在沿图像扫描时使用的滤波器的高度和宽度。
%批量归一化层批量归一化层对神经网络中的激活值和梯度传播进行归一化,使神经网络训练成为更简单的优化问题。
%ReLU 层批量归一化层后接一个非线性激活函数。
%最大池化层卷积层(带激活函数)有时会后跟下采样操作,以减小特征图的空间大小并删除冗余空间信息。
%全连接层卷积层和下采样层后跟一个或多个全连接层。
%softmax 层 softmax 激活函数对全连接层的输出进行归一化。
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];
%% 指定训练选项
%使用具有动量的随机梯度下降 (SGDM) 训练神经网络,初始学习率为 0.01。
%将最大训练轮数设置为 4。一轮训练是对整个训练数据集的一个完整训练周期。
%每轮训练都会打乱数据。
%通过指定验证数据和验证频率,监控训练过程中的神经网络准确度。软件基于训练数据训练神经网络,并在训练过程中按固定时间间隔计算基于验证数据的准确度。验证数据不用于更新神经网络权重。
%在图中显示训练进度并监控准确度
options = trainingOptions("sgdm", ...
InitialLearnRate=0.01, ...
MaxEpochs=4, ...
Shuffle="every-epoch", ...
ValidationData=imdsValidation, ...
ValidationFrequency=30, ...
Plots="training-progress", ...
Metrics="accuracy", ...
Verbose=false);
%% 使用训练数据训练神经网络
%使用 layers 定义的架构、训练数据和训练选项训练神经网络。
%默认情况下,trainnet 使用 GPU(如果有),否则使用 CPU。
%在 GPU 上训练需要 Parallel Computing Toolbox™ 和支持的 GPU 设备
%训练进度图显示了小批量损失和准确度以及验证损失和准确度。损失是交叉熵损失。准确度是神经网络分类正确的图像的百分比。
net = trainnet(imdsTrain,layers,"crossentropy",options);
%% 对验证图像进行分类并计算准确度
%对测试图像进行分类。
%使用 minibatchpredict 函数对多个观测值进行预测
%使用 scores2label 函数将预测分数转换为标签
%minibatchpredict 函数自动使用 GPU(如果有)。否则,该函数使用 CPU。
scores = minibatchpredict(net,imdsValidation);
YValidation = scores2label(scores,classNames);
%计算分类准确度
%准确度是正确预测的标签的百分比
TValidation = imdsValidation.Labels;
accuracy = mean(YValidation == TValidation)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于深度学习网络的数字分类 (2000个子文件)
jysdxxwldszfl.m 5KB
image7381.png 540B
image7380.png 526B
image7370.png 520B
image7353.png 517B
image7399.png 514B
image7371.png 513B
image9373.png 512B
image9353.png 511B
image7352.png 511B
image7393.png 510B
image7392.png 509B
image7364.png 508B
image7600.png 503B
image9375.png 502B
image9393.png 501B
image7359.png 501B
image9374.png 500B
image7584.png 500B
image9370.png 498B
image9570.png 498B
image7388.png 498B
image7385.png 497B
image7590.png 496B
image7382.png 495B
image9377.png 492B
image7375.png 492B
image7384.png 492B
image7351.png 490B
image7396.png 489B
image7365.png 489B
image7354.png 488B
image9569.png 487B
image7555.png 487B
image7554.png 487B
image9354.png 486B
image7391.png 485B
image7363.png 485B
image7599.png 484B
image9352.png 483B
image9386.png 481B
image9366.png 481B
image7474.png 481B
image7387.png 480B
image9583.png 479B
image9384.png 479B
image7374.png 479B
image7361.png 479B
image9372.png 478B
image9355.png 477B
image7454.png 477B
image9838.png 476B
image9392.png 474B
image7389.png 474B
image7460.png 474B
image7400.png 474B
image7360.png 474B
image9357.png 473B
image9356.png 473B
image9828.png 472B
image9837.png 471B
image9596.png 471B
image7585.png 471B
image7377.png 471B
image9396.png 470B
image9381.png 470B
image7561.png 470B
image9573.png 469B
image7560.png 469B
image7573.png 469B
image7583.png 469B
image7574.png 469B
image9806.png 468B
image7567.png 468B
image9385.png 467B
image7566.png 467B
image7598.png 467B
image7366.png 467B
image9364.png 466B
image9368.png 466B
image7565.png 466B
image9379.png 465B
image7558.png 465B
image7572.png 465B
image9369.png 464B
image9843.png 464B
image7577.png 464B
image9563.png 463B
image9400.png 463B
image9391.png 463B
image9394.png 462B
image9561.png 462B
image9584.png 462B
image7588.png 462B
image7617.png 462B
image7367.png 462B
image7553.png 462B
image9380.png 461B
image7810.png 461B
image7594.png 461B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
逼子歌
- 粉丝: 3488
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功