最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用Alexnet進(jìn)行遷移學(xué)習(xí)(MATLAB)

2023-02-01 13:04 作者:永遠(yuǎn)的修伊  | 我要投稿

前言:

? ? ? ?本文基于預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)進(jìn)行模型創(chuàng)建,進(jìn)行調(diào)整后應(yīng)用到已有的數(shù)據(jù)集電熔鎂砂(Fused magnesium furnace, FMF)工況識(shí)別(實(shí)驗(yàn)室數(shù)據(jù)集,不公開)。

正文:

? ? ? 這里不對(duì)數(shù)據(jù)集背景展開介紹,為了方便說(shuō)明,視FMF數(shù)據(jù)集為一個(gè)故障識(shí)別問(wèn)題,故障工況的標(biāo)簽為1,非故障工況的標(biāo)簽為0。FMF數(shù)據(jù)集樣本來(lái)自于實(shí)際電熔鎂爐同一批爐次工況運(yùn)行的片段,后期經(jīng)過(guò)圖像增強(qiáng)處理,圖像大小為32X32X3的RGB圖像。其中使用訓(xùn)練集traindata2.mat包含3010張圖像,故障數(shù)與非故障數(shù)比例為1923:1087;使用測(cè)試集testdata4.mat包含626張圖像,故障數(shù)與非故障數(shù)比例為416:210。

實(shí)驗(yàn)環(huán)境使用MATLAB 2022b的深度學(xué)習(xí)工具箱以及附加功能資源。

建議先安裝好附加資源管理器的AlexNet

AlexNet安裝
Alexnet的網(wǎng)絡(luò)結(jié)構(gòu)

修改全連接層

修改全連接層


非常失敗的一次嘗試,為了適應(yīng)Alexnet網(wǎng)絡(luò)輸入,調(diào)整圖片輸入為227*227*3,訓(xùn)練結(jié)果只有91%的準(zhǔn)確率,在測(cè)試集上效果不理想


%% Alexnet遷移學(xué)習(xí)

%% 清空環(huán)境和圖窗

clear

close all

%% 導(dǎo)入模型

net = alexnet;

layers = net.Layers

layers(end-2) = fullyConnectedLayer(2); ?%故障識(shí)別為二分類

layers(end) = classificationLayer;

%% 準(zhǔn)備數(shù)據(jù)集

load("traindata2.mat")

len = length(label);

img(:,:,:,len) = zeros(227,227,3); %預(yù)分配內(nèi)存

for i ?= 1:len

? ?img(:,:,:,i) = imresize(video(:,:,:,i),[227 227]); %調(diào)整輸入大小為227*227*3

end

rng(10) ? % 設(shè)置seed,便于復(fù)現(xiàn)

randIndex = randperm(len);

len1 = round(0.7*len);

trainIndex = randIndex(1:len1);

testIndex = randIndex(len1+1:end);

trainlabels = label(trainIndex);

trainImages = img(:,:,:,trainIndex);

vallabels = label(testIndex);

valImages = img(:,:,:,testIndex);

trainlabels = categorical(trainlabels);

vallabels = categorical(vallabels);

%% 模型訓(xùn)練

options = trainingOptions('adam',...

? ?'ExecutionEnvironment','gpu',...

? ?'InitialLearnRate',0.01,...

? ?'MiniBatchSize',128,...

? ?'MaxEpochs',100,...

? ?'Shuffle','every-epoch',...

? ?'ValidationData',{valImages,vallabels},...

? ?'ValidationFrequency',50,...

? ?'Verbose',false,...

? ?'Plots','training-progress');

net = trainNetwork(trainImages,trainlabels,layers,options);


Alexnet模型訓(xùn)練過(guò)程


%% 測(cè)試集驗(yàn)證

load('testdata4_label.mat')

testlabels = categorical(label);

len1 = length(testlabels);

img1(:,:,:,len1) = zeros(227,227,3);

for i = 1:len1

? ?img1(:,:,:,i) = imresize(video(:,:,:,i),[227 227]);

end

pred_labels = classify(net,img1);

test_Acc = sum(pred_labels == testlabels')/len1

cm = confusionchart(testlabels',pred_labels); %推薦使用

cm.ColumnSummary = 'column-normalized';

cm.RowSummary = 'row-normalized';

cm.Title = 'SAPI-FMF Confusion Matrix';

測(cè)試集上訓(xùn)練效果

對(duì)比實(shí)驗(yàn),使用自定義的CNN,網(wǎng)絡(luò)結(jié)構(gòu)更簡(jiǎn)單,不對(duì)原始輸入進(jìn)行調(diào)整

自定義的模型結(jié)構(gòu)


%% 清空變量和圖窗

clear;

close all;

%% 導(dǎo)入數(shù)據(jù)集

load("traindata2.mat")

len = length(label); ?

rng(10) ? % 設(shè)置seed,便于復(fù)現(xiàn)

randIndex = randperm(len);

len1 = round(0.7*len);

trainIndex = randIndex(1:len1);

testIndex = randIndex(len1+1:end);

trainlabels = label(trainIndex);

trainImages = video(:,:,:,trainIndex);

vallabels = label(testIndex);

valImages = video(:,:,:,testIndex);

trainlabels = categorical(trainlabels);

vallabels = categorical(vallabels);

%% 定義神經(jīng)網(wǎng)絡(luò)

layers = [

? ? imageInputLayer([32,32,3])

? ? convolution2dLayer(5,32,'Padding','same')

? ? maxPooling2dLayer(2,"Stride",2,"Padding","same")

? ? dropoutLayer(0.3)

? ? convolution2dLayer(3,32)

? ? batchNormalizationLayer

? ? reluLayer

? ? maxPooling2dLayer(2,'Stride',2)

? ? fullyConnectedLayer(2)

? ? softmaxLayer

? ? classificationLayer

];

options = trainingOptions('adam',...

? ?'ExecutionEnvironment','multi-gpu',...

? ?'InitialLearnRate',0.01,...

? ?'MiniBatchSize',128,...

? ?'MaxEpochs',100,...

? ?'Shuffle','every-epoch',...

? ?'ValidationData',{valImages,vallabels},...

? ?'ValidationFrequency',50,...

? ?'Verbose',false,...

? ?'Plots','training-progress');


自定義模型訓(xùn)練過(guò)程


net = trainNetwork(trainImages,trainlabels,layers,options);

%% 測(cè)試集驗(yàn)證

load('testdata4_label.mat')

testlabels = categorical(label);

testImages = video;

len2 = length(testlabels);

pred_labels = classify(net,testImages);

test_Acc = sum(pred_labels == testlabels')/len2

cm = confusionchart(testlabels',pred_labels); %推薦使用

cm.ColumnSummary = 'column-normalized';

cm.RowSummary = 'row-normalized';

cm.Title = 'SAPI-FMF Confusion Matrix';

cm.RowSummary = 'row-normalized';

cm.Title = 'SAPI-FMF Confusion Matrix';

? 針對(duì)二維卷積神經(jīng)網(wǎng)絡(luò)的模型,訓(xùn)練效果均不太理想,同時(shí)由于所選數(shù)據(jù)集分布不合理,訓(xùn)練的模型傾向于無(wú)故障的分類(實(shí)際的數(shù)據(jù)集比所選數(shù)據(jù)集要多),模型準(zhǔn)確性和泛化能力更差;另一方面,模型參數(shù)和優(yōu)化參數(shù)沒(méi)有充分調(diào)整。本文借助于MATLAB進(jìn)行初步的驗(yàn)證和嘗試,后面會(huì)使用基于python的深度學(xué)習(xí)框架pytorch或者Tensorflow進(jìn)行模型的搭建和訓(xùn)練。

使用Alexnet進(jìn)行遷移學(xué)習(xí)(MATLAB)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
刚察县| 红原县| 华蓥市| 广宗县| 洪洞县| 威信县| 健康| 雷山县| 贵港市| 江安县| 长宁区| 平原县| 孝感市| 突泉县| 馆陶县| 资溪县| 驻马店市| 油尖旺区| 漠河县| 洪泽县| 浮梁县| 同仁县| 桃源县| 兴业县| 古交市| 康保县| 高雄县| 巍山| 都匀市| 宁强县| 宁津县| 吴忠市| 三明市| 西吉县| 龙江县| 天门市| 三原县| 龙井市| 临高县| 紫阳县| 平泉县|