在matlab上使用自己的数据进行迁移学习

本文详细介绍如何使用预训练的AlexNet进行迁移学习,包括模型导入、结构调整、数据集准备、训练参数设定及结果验证,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、大致过程有以下几个步骤

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

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值