在matlab上使用自己的数据进行迁移学习
一、大致过程有以下几个步骤1-导入预先训练好的网络(我使用的是alexnet)2-配置最后三层3-利用新数据训练网络4-检验结果 二、详细过程如下:1-导入模型net = alexnet; 注:如果出现如下问题,直接点击 Add-On Explorer 把模型安装好就行 2-修改模型 注:fullyConnectedLayer(5,....
·
一、大致过程有以下几个步骤
1-导入预先训练好的网络(我使用的是alexnet)
2-配置最后三层
3-利用新数据训练网络
4-检验结果
二、详细过程如下:
1-导入模型
net = alexnet;
注:如果出现如下问题,直接点击 Add-On Explorer 把模型安装好就行


2-修改模型
注:fullyConnectedLayer(5,......)此处数字5代表我新的训练集分类有5个,按照自己的情况修改
layers = net.Layers(1:end-3);
new_layers = [layers
fullyConnectedLayer(5,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)
softmaxLayer
classificationLayer
];
3-导入数据
%如果没有合适的数据集可以使用matlab官方提供的数据集
unzip('MerchData.zip'); %运行这句话后你的工作路径下会多出一个文件夹,里面就是数据集
image = imageDatastore('MerchData','IncludeSubfolders',true,'LabelSource','foldernames');
[imageTrain,imageTest] = splitEachLabel(image,0.7,'randomized');
%将数据集%70划为训练集,其余为测试集
4-配置训练参数
ops = trainingOptions('sgdm', ...
'InitialLearnRate',0.0001, ...
'ValidationData',imageTest, ...
'Plots','training-progress', ...
'MiniBatchSize',5, ...
'MaxEpochs',10,...
'ValidationPatience',Inf,...
'Verbose',false);
%'MaxEpochs' 即训练次数,我设的较小,根据需要调整
5-开始训练
%开始训练
tic
net_train = trainNetwork(imageTrain,new_layers,ops);
toc
出现如下界面

6-测试新的图片,验证网络
image_val = imresize(imread('cap3.jpg'),[227,227]);
[label,conf] = classify(net_train,image_val);
imshow(image_val);title(sprintf('%s %.2f',char(label),max(conf)));
因为我的训练集很小,所以效果不会很好,但是结果也还是正确的

So ,enjoy it
更多推荐


所有评论(0)