大家好我們今天來講一講如何用Matlab做一個新的遷移學(xué)習(xí)您可能需要的基礎(chǔ)知識
Matlab編程Deep learning的基礎(chǔ)知識
一、什么是遷移學(xué)習(xí)?
以圖像識別為例。如果你想構(gòu)建一個神經(jīng)網(wǎng)絡(luò),讓它能夠識別馬匹,但是手上又沒有任何公開的算法可以完成這項任務(wù)。這時,借助遷移學(xué)習(xí),你可以從一個原本是用來識別其它動物的現(xiàn)成的卷積神經(jīng)網(wǎng)絡(luò)(CNN)入手,對其進(jìn)行調(diào)整并訓(xùn)練它識別馬匹。深度學(xué)習(xí)應(yīng)用中常常用到遷移學(xué)習(xí)。可以采用預(yù)訓(xùn)練的網(wǎng)絡(luò),基于它學(xué)習(xí)新任務(wù)。與使用隨機(jī)初始化的權(quán)重從頭訓(xùn)練網(wǎng)絡(luò)相比,通過遷移學(xué)習(xí)微調(diào)網(wǎng)絡(luò)要更快更簡單。我們可以使用較少數(shù)量的訓(xùn)練圖像快速地將已學(xué)習(xí)的特征遷移到新任務(wù)。
二、網(wǎng)絡(luò)的創(chuàng)建和數(shù)據(jù)的導(dǎo)入
加載數(shù)據(jù)
解壓縮新圖像并加載這些圖像作為圖像數(shù)據(jù)存儲。imageDatastore 根據(jù)文件夾名稱自動標(biāo)注圖像,并將數(shù)據(jù)存儲為 ImageDatastore 對象。通過圖像數(shù)據(jù)存儲可以存儲大圖像數(shù)據(jù),包括無法放入內(nèi)存的數(shù)據(jù),并在卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中高效分批讀取圖像。
unzip(‘MerchData.zip’);imds = imageDatastore(‘MerchData’, 。.. ‘IncludeSubfolders’,true, 。.. ‘LabelSource’,‘foldernames’);
將數(shù)據(jù)劃分為訓(xùn)練數(shù)據(jù)集和驗證數(shù)據(jù)集。將 70% 的圖像用于訓(xùn)練,30% 的圖像用于驗證。splitEachLabel 將 images 數(shù)據(jù)存儲拆分為兩個新的數(shù)據(jù)存儲。
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,‘randomized’);
這個非常小的數(shù)據(jù)集現(xiàn)在包含 55 個訓(xùn)練圖像和 20 個驗證圖像。
numTrainImages = numel(imdsTrain.Labels);idx = randperm(numTrainImages,16);figurefor i = 1:16 subplot(4,4,i) I = readimage(imdsTrain,idx(i)); imshow(I)end
加載預(yù)訓(xùn)練網(wǎng)絡(luò)
加載預(yù)訓(xùn)練的 AlexNet 神經(jīng)網(wǎng)絡(luò)。如果未安裝 Deep Learning Toolbox Model for AlexNet Network,則軟件會提供下載鏈接。AlexNet 已基于超過一百萬個圖像進(jìn)行訓(xùn)練,可以將圖像分為 1000 個對象類別(例如鍵盤、鼠標(biāo)、鉛筆和多種動物)。因此,該模型已基于大量圖像學(xué)習(xí)了豐富的特征表示。
net = alexnet;
使用 analyzeNetwork 可以交互可視方式呈現(xiàn)網(wǎng)絡(luò)架構(gòu)以及有關(guān)網(wǎng)絡(luò)層的詳細(xì)信息。
analyzeNetwork(net)
第一層(圖像輸入層)需要大小為 227×227×3 的輸入圖像
其中 3 是顏色通道數(shù)
inputSize = 1×3 227 227 3
三、網(wǎng)絡(luò)的訓(xùn)練
替換最終層
預(yù)訓(xùn)練網(wǎng)絡(luò) net 的最后三層針對 1000 個類進(jìn)行配置。必須針對新分類問題微調(diào)這三個層。從預(yù)訓(xùn)練網(wǎng)絡(luò)中提取除最后三層之外的所有層。
layersTransfer = net.Layers(1:end-3);
通過將最后三層替換為全連接層、softmax 層和分類輸出層,將層遷移到新分類任務(wù)。根據(jù)新數(shù)據(jù)指定新的全連接層的選項。將全連接層設(shè)置為大小與新數(shù)據(jù)中的類數(shù)相同。要使新層中的學(xué)習(xí)速度快于遷移的層,請增大全連接層的 WeightLearnRateFactor 和 BiasLearnRateFactor 值。
numClasses = numel(categories(imdsTrain.Labels))numClasses = 5
layers = [ layersTransfer fullyConnectedLayer(numClasses,‘WeightLearnRateFactor’,20,‘BiasLearnRateFactor’,20) softmaxLayer classificationLayer];
訓(xùn)練網(wǎng)絡(luò)
網(wǎng)絡(luò)要求輸入圖像的大小為 227×227×3,但圖像數(shù)據(jù)存儲中的圖像具有不同大小。使用增強的圖像數(shù)據(jù)存儲可自動調(diào)整訓(xùn)練圖像的大小。指定要對訓(xùn)練圖像額外執(zhí)行的增強操作:沿垂直軸隨機(jī)翻轉(zhuǎn)訓(xùn)練圖像,以及在水平和垂直方向上隨機(jī)平移訓(xùn)練圖像最多 30 個像素。數(shù)據(jù)增強有助于防止網(wǎng)絡(luò)過擬合和記憶訓(xùn)練圖像的具體細(xì)節(jié)。
pixelRange = [-30 30];imageAugmenter = imageDataAugmenter( 。.. ‘RandXReflection’,true, 。.. ‘RandXTranslation’,pixelRange, 。.. ‘RandYTranslation’,pixelRange);augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, 。.. ‘DataAugmentation’,imageAugmenter);
對驗證圖像進(jìn)行分類
使用經(jīng)過微調(diào)的網(wǎng)絡(luò)對驗證圖像進(jìn)行分類
[YPred,scores] = classify(netTransfer,augimdsValidation);
顯示四個示例驗證圖像及預(yù)測的標(biāo)簽。
idx = randperm(numel(imdsValidation.Files),4);figurefor i = 1:4 subplot(2,2,i) I = readimage(imdsValidation,idx(i)); imshow(I) label = YPred(idx(i)); title(string(label));end
計算針對驗證集的分類準(zhǔn)確度。準(zhǔn)確度是網(wǎng)絡(luò)預(yù)測正確的標(biāo)簽的比例
YValidation = imdsValidation.Labels;accuracy = mean(YPred == YValidation)
accuracy = 1
今天你學(xué)廢了嗎???
編輯:lyn
-
matlab
+關(guān)注
關(guān)注
186文章
2981瀏覽量
231091 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4782瀏覽量
101230 -
圖像識別
+關(guān)注
關(guān)注
9文章
521瀏覽量
38403 -
遷移學(xué)習(xí)
+關(guān)注
關(guān)注
0文章
74瀏覽量
5590
原文標(biāo)題:【圖像識別】基于Matlab的遷移學(xué)習(xí)的圖像分類案例
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
用小安派 DSL做一個天氣站
![用小安派 DSL<b class='flag-5'>做一個</b>天氣站](https://file1.elecfans.com//web3/M00/05/06/wKgZO2d7l-KAIy_KAADgnkgKEGg555.jpg)
emc數(shù)據(jù)遷移工具的使用指南
云計算遷移的步驟與注意事項
如何使用合宙的DTU+業(yè)務(wù)云平臺,做一個溫濕度傳感器數(shù)據(jù)采集項目?
![如何使用合宙的DTU+業(yè)務(wù)云平臺,<b class='flag-5'>做一個</b>溫濕度傳感器數(shù)據(jù)采集項目?](https://file1.elecfans.com/web2/M00/07/1A/wKgaombioyeAfrHQAALOJl2J7rk270.png)
如何用TLC2272C做一個耳機(jī)的功放?
如何用運放設(shè)計一個高頻的壓控電流源?
利用Matlab函數(shù)實現(xiàn)深度學(xué)習(xí)算法
如何使用MATLAB創(chuàng)建預(yù)測模型
預(yù)訓(xùn)練和遷移學(xué)習(xí)的區(qū)別和聯(lián)系
遷移學(xué)習(xí)的基本概念和實現(xiàn)方法
MATLAB如何使用訓(xùn)練好的網(wǎng)絡(luò)
一個暑假如何學(xué)習(xí)單片機(jī)
![<b class='flag-5'>一</b><b class='flag-5'>個</b>暑假如何<b class='flag-5'>學(xué)習(xí)</b>單片機(jī)](https://file1.elecfans.com/web2/M00/ED/C2/wKgaomZo-b2ADdwmAABI0SO3lvs535.png)
評論