您的位置:首页 > 新闻 > 热点要闻 > 一建十个专业含金量排名_广州从化区疫情实时_桂林seo排名_游戏推广员上班靠谱吗

一建十个专业含金量排名_广州从化区疫情实时_桂林seo排名_游戏推广员上班靠谱吗

2024/12/22 19:27:39 来源:https://blog.csdn.net/wang1290865309/article/details/143594927  浏览:    关键词:一建十个专业含金量排名_广州从化区疫情实时_桂林seo排名_游戏推广员上班靠谱吗
一建十个专业含金量排名_广州从化区疫情实时_桂林seo排名_游戏推广员上班靠谱吗

综述

在大数据和人工智能时代,深度学习是一种最为常见的数据分析和拟合工具。本报告以常用分析软件Matlab为例,介绍如何通过编写代码实现一个简单的CNN卷积神经网络。

Step 1: 打开matlab,新建脚本

1、安装matlab 2018以上版本后,双击图标打开。

2、点击“编辑器”页面,点击左上角的“新建”-“脚本”

3、保存脚本到默认路径(建议不要改路径!!),起一个你喜欢的名字(例如CVhandWritingDigits)

Step 2: 读入数据

1、按照下图编写代码,读入数据

每写完一行代码,建议运行一下,确保没有错误,再往下写。

图中“…”表示这行代码太长了,要分开两行。一直到第二行出线“;”,代表这行代码完了。

“%”代表注释内容,可以不写上去。

运行后,没有报错,工作区出线这些变量和赋值,可以往下做了。

2、显示部分数据

运行后,得到下图结果

3、显示所有标签,及每个标签中的数据量

运行后,得到如下结果

4、查看图像的大小

运行后,得到如下结果

5、划分训练集和测试集

Step 3: 配置卷积神经网络

1、编写以下代码,配置CNN的每一层

2、设置模型训练的参数options

3、开始训练模型

运行后,弹出如下窗口,我们可以观看模型在训练过程中loss和accuracy的变化

最后在验证集的准确率上达到99.52%。

Step 4: 在验证集上进行验证

1、将验证集放在指定路径下,例如D盘根目录下。然后对验证集进行数据整理。

2、将训练好的模型,应用于验证数据集上。

运行代码后,得到如下结果。

同学们可以进行思考,为什么在训练时得到的准确率是99.62%,而此时在验证集上的验证集仅为60%

3、可视化结果

运行代码后,得到如下结果。

digitDatasetPath = fullfile(matlabroot, 'toolbox', 'nnet', 'nndemos', ...
'nndatasets', 'DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
'IncludeSubfolders', true, 'LabelSource', 'foldernames');
% 加载手写数字数据集,imageDatastore根据文件夹名称自动标记图像,
% 并将数据存储为imageDatastore对象
figure;
perm = randperm(10000, 20);
for i = 1:20
subplot(4, 5, i);
imshow(imds.Files{perm(i)})
end
countEachLabel(imds)
img = readimage(imds, 1);
size(img)
% 查看图像的大小,每个图像为28*28*1像素;1代表为黑白。
numTrainFiles = 750;
[imdsTrain, imdsTest] = splitEachLabel(imds, numTrainFiles, 'randomized');
% 将数据集划分为训练和测试数据集,随机选取每个标签中的750个图像放入训练集中,
% 测试集包含每个标签的剩余图像。
% 以下为设置CNN的各个层结构
layers = [
imageInputLayer([28 28 1]) % 图像输入层,指定输入图像的尺寸
convolution2dLayer(3, 8, 'Padding', 'same') 
% 8个大小为3*3的卷积核。padding为补0策略
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'stride', 2)
% 池化层,stride为步幅大小;本例中是2*2的池化层,步幅为2
convolution2dLayer(3, 16, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'stride', 2)
convolution2dLayer(3, 32, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'stride', 2)
fullyConnectedLayer(10) % 全连接层。输出大小为10,对应10个标签
softmaxLayer % softmax作为最后一层的分类器
classificationLayer
];
options = trainingOptions('sgdm', ... % 随机梯度下降
'InitialLearnRate', 0.01, ... % 学习率
'MaxEpochs', 4, ... % epoch为整个训练数据集的完整训练周期
'Shuffle', 'every-epoch', ...
'ValidationData', imdsTest, ... % 测试集
'ValidationFrequency', 30, ...
'Verbose', false, ...
'Plots', 'training-progress'); % 查看训练过程
net = trainNetwork(imdsTrain, layers, options); % 开始训练
save 'CSNet.mat' net % 保存结果
mineSet = imageDatastore('D:\hw22\hw22\', 'FileExtensions', '.jpg', ...
'IncludeSubfolders', false); % 指定验证集的位置,是一套新的数据
mLabels = cell(size(mineSet.Files, 1), 1); % 标记数据
for i = 1:size(mineSet.Files, 1)
[filepath, name, ext] = fileparts(char(mineSet.Files{i}));
mLabels{i, 1} = char(name);
end
mLabels2 = categorical(mLabels);
mineSet.Labels = mLabels2;
[YPred, probs] = classify(net, mineSet); % 利用训练好的模型,预测验证集的标签
YValidation = mineSet.Labels;
accuracy = sum(YPred == YValidation) / numel(YValidation) % 计算验证集的准确率
figure; % 画图,在验证集中随机挑10张,把真值和预测值标出来
nSample = 10;
ind = randperm(size(YPred, 1), nSample);
for i = 1:nSample
subplot(2, fix((nSample + 1) / 2), i)
imshow(char(mineSet.Files(ind(i))))
title(['PRE' char(YPred(ind(i)))])
if char(YPred(ind(i))) == char(YValidation(ind(i)))
xlabel(['PRE:' char(YValidation(ind(i)))], 'Color', 'b')
else
xlabel(['PRE:' char(YValidation(ind(i)))], 'color', 'r')
end
end

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com