前言:
现在小伙伴们对“matlab中network尺寸”都比较注重,各位老铁们都想要学习一些“matlab中network尺寸”的相关内容。那么小编也在网络上搜集了一些有关“matlab中network尺寸””的相关资讯,希望朋友们能喜欢,同学们快快来了解一下吧!程序
% 读取MATLAB自带数字图像数据集,数据集有10000幅0-9图像,各数字有1000幅图像digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ... 'nndemos','nndatasets','DigitDataset');imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true,'LabelSource','foldernames');% 将每个标签文件夹中的文件随机拆分为两组,750个为imdsTrain,其余为imdsTestnumTrainingFiles = 750;[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');% 定义一个简单的三层CNN网络结构layers = [ % 输入层,接收28×28×1的灰度图像 imageInputLayer([28 28 1]) % 卷积层,使用3×3的卷积核,输出8个特征图,保持边界不变 convolution2dLayer(3,8,'Padding','same') % 归一化层,对卷积层的输出进行归一化处理,提高训练效率和泛化能力 batchNormalizationLayer % 激活层,使用ReLU函数作为激活函数,增加非线性特征 reluLayer % 池化层,使用2×2的最大池化核,步长为2,降低特征图的尺寸和参数数量 maxPooling2dLayer(2,'Stride',2) % 卷积层,使用3×3的卷积核,输出16个特征图,保持边界不变 convolution2dLayer(3,16,'Padding','same') % 归一化层,对卷积层的输出进行归一化处理,提高训练效率和泛化能力 batchNormalizationLayer % 激活层,使用ReLU函数作为激活函数,增加非线性特征 reluLayer % 池化层,使用2×2的最大池化核,步长为2,降低特征图的尺寸和参数数量 maxPooling2dLayer(2,'Stride',2) % 卷积层,使用3×3的卷积核,输出32个特征图,保持边界不变 convolution2dLayer(3,32,'Padding','same') % 归一化层,对卷积层的输出进行归一化处理,提高训练效率和泛化能力 batchNormalizationLayer % 激活层,使用ReLU函数作为激活函数,增加非线性特征 reluLayer % 全连接层,将卷积层的输出展平为一维向量,并连接到10个神经元上,对应10个类别(0-9) fullyConnectedLayer(10) % softmax层,将全连接层的输出转换为概率分布 softmaxLayer % 分类层,根据softmax层的输出和真实标签计算损失函数,并评估分类准确率 classificationLayer];% 设置训练参数options = trainingOptions('sgdm', ... 'InitialLearnRate',0.01, ... % 初始学习率为0.01 'MaxEpochs',5, ... % 最大迭代次数为5次 'Shuffle','every-epoch', ... % 每次迭代都打乱数据顺序 'ValidationData',imdsTest, ... % 使用imdsTest作为验证数据集 'ValidationFrequency',30, ... % 每30次迭代进行一次验证 'Verbose',false, ... % 不在命令窗口显示训练过程信息 'Plots','training-progress'); % 绘制训练进度图% 训练网络,并保存训练好的模型net = trainNetwork(imdsTrain,layers,options);save net% 使用classify函数对测试数据进行分类,并计算准确率YPred = classify(net,imdsTest);YTest = imdsTest.Labels;accuracy = sum(YPred == YTest)/numel(YTest);% 使用imshow函数显示一些测试图片和分类结果figure;perm = randperm(2500,20);for i = 1:20 subplot(4,5,i); s = classify(net,readimage(imdsTest,perm(i))); imshow(imdsTest.Files{perm(i)}); title(string(s));end
识别结果
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #matlab中network尺寸