46
社区成员




习题案例源自作者:https://blog.csdn.net/garker?type=blog
软件:matlab2022a
数据集:kaggle猫狗数据集
网络:Alexnet
数据集准备:【数据集度云链接】
链接:https://pan.baidu.com/s/17c4K04kDKDUsuXdLkPecKA
提取码:8rhn
(D:/machine learning/Kaggle/test1&train)
说明:获取数据集后对其进行分类(训练集、测试集),对图片大小调整后,将训练集按照7:3进行分割,而后读取网络alexnet并组建新网络,然后训练、测试alexnet网络
一、打开matlab点击新建,新建后打开文件夹D:/machine learning/Kaggle/test1&train,代码放入后点击运行,因为数据集较大,所以运行时间较长。
二、完整代码
imds = imageDatastore('D:\machine learning\Kaggle\train', ...
'IncludeSubfolders',true, ...
'LabelSource','foldernames');
numTrainImages = numel(imds.Labels);
for i = 1:numTrainImages
s = string(imds.Files(i));
I = imread(s);
I = imresize(I,[227,227]);
imwrite(I,s);
s
end
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomized');
net = alexnet;
inputSize = net.Layers(1).InputSize
layersTransfer = net.Layers(1:end-3);
numClasses = numel(categories(imdsTrain.Labels));
layers = [
layersTransfer
fullyConnectedLayer(numClasses,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)
softmaxLayer
classificationLayer];
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsValidation);
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);
options = trainingOptions('sgdm', ...
'MiniBatchSize',10, ...
'MaxEpochs',10, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augimdsValidation, ...
'ValidationFrequency',3, ...
'Verbose',false, ...
'Plots','training-progress');
netTransfer = trainNetwork(augimdsTrain,layers,options);
三、训练结果
训练结果准确率92%左右
四、遇到的问题
代码报错:函数或变量无法识别(augimdsTrain函数解决示例);Alexnet网络的安装,