溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

發(fā)布時(shí)間:2021-12-13 09:21:39 來(lái)源:億速云 閱讀:853 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

1 APP的使用

(1)打開(kāi)方式一
從Matlab工具欄APP處搜索Deep Network Designer點(diǎn)擊打開(kāi),或者在命令行窗口輸入命令:deepNetworkDesigner開(kāi)啟
Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

(2)新建神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
拖動(dòng)左側(cè)的圖標(biāo)到中心工作區(qū),然后點(diǎn)擊連接圖標(biāo)
Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

(3)使用現(xiàn)成的神經(jīng)網(wǎng)絡(luò)
舉例使用alexnet,在窗口輸入alexnet,提示沒(méi)有安裝的話,就點(diǎn)擊紅色中的附加資源管理器,點(diǎn)擊安裝就行。安裝完成后,再次輸入alexnet即可。然后再APP中點(diǎn)擊導(dǎo)入,就會(huì)提示導(dǎo)入alexnet網(wǎng)絡(luò)。
Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

(4)檢查網(wǎng)絡(luò)結(jié)構(gòu)是否正確
點(diǎn)擊工具欄的分析,可以查看網(wǎng)絡(luò)的結(jié)構(gòu),如果結(jié)構(gòu)不對(duì),會(huì)報(bào)錯(cuò)并紅色的提示。
Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

(5)生成代碼代碼
點(diǎn)擊導(dǎo)出,選擇導(dǎo)出生成代碼。把layers的代碼拷貝出來(lái),這就是你網(wǎng)絡(luò)結(jié)構(gòu)的代碼。
Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

會(huì)生成實(shí)時(shí)腳本文件,layers就是我們搭建的神經(jīng)網(wǎng)絡(luò),單獨(dú)拷貝出來(lái)使用。
Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么

2 使用神經(jīng)網(wǎng)絡(luò)

2.1 簡(jiǎn)單例子

% 一個(gè)使用APP的Demo
% 加載數(shù)據(jù)集
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
    'nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');
% 展示數(shù)據(jù)集
figure
numImages = 10000;
perm = randperm(numImages,20);
for i = 1:20
    subplot(4,5,i);
    imshow(imds.Files{perm(i)});
end
% 劃分?jǐn)?shù)據(jù)集和測(cè)試集出來(lái)
numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');
% 使用搭建的神經(jīng)網(wǎng)絡(luò)
layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];
% 配置訓(xùn)練參數(shù)
 options = trainingOptions('sgdm', ...
    'MaxEpochs',20,...
    'InitialLearnRate',1e-4, ...
    'Verbose',false, ...
    'Plots','training-progress');
 % 訓(xùn)練神經(jīng)網(wǎng)絡(luò)
 net = trainNetwork(imdsTrain,layers,options);
 % 使用神經(jīng)網(wǎng)絡(luò),這是分類的例子。使用classify.搭配神經(jīng)網(wǎng)絡(luò)中的最后一層classificationLayer
 % 如果是回歸的神經(jīng)網(wǎng)絡(luò),則神經(jīng)網(wǎng)絡(luò)的最后一層是regressionLayer,搭配predict使用,就是替換classify為predict
 YPred = classify(net,imdsTest);
YTest = imdsTest.Labels;
accuracy = sum(YPred == YTest)/numel(YTest)

2.2 trainOptions

官方文檔講解
根據(jù)自己的訓(xùn)練需要,只選擇需要的參數(shù)設(shè)定即可,不設(shè)定的就是執(zhí)行默認(rèn)值

options = 
  TrainingOptionsSGDM with properties:
                    Momentum: 0.9000
            InitialLearnRate: 0.0100      % 初始學(xué)習(xí)率
           LearnRateSchedule: 'piecewise' % 學(xué)習(xí)率周期
         LearnRateDropFactor: 0.2000            % 學(xué)習(xí)率下降因子
         LearnRateDropPeriod: 5                     % 學(xué)習(xí)率下降周期
            L2Regularization: 1.0000e-04    % L2正則化參數(shù)
     GradientThresholdMethod: 'l2norm'      
           GradientThreshold: Inf                   % 梯度閾值
                   MaxEpochs: 20                    % 最大epochs
               MiniBatchSize: 64                    % 最小batch大小
                     Verbose: 1                     % 是否窗口打印訓(xùn)練進(jìn)度
            VerboseFrequency: 50
              ValidationData: []                    % 放入驗(yàn)證集數(shù)據(jù)和驗(yàn)證集標(biāo)簽
         ValidationFrequency: 50                    % 驗(yàn)證頻率
          ValidationPatience: Inf
                     Shuffle: 'once'            % 打亂訓(xùn)練集的次數(shù)
              CheckpointPath: ''    
        ExecutionEnvironment: 'auto'            % 設(shè)置CPU或者GPU執(zhí)行
                  WorkerLoad: []
                   OutputFcn: []
                       Plots: 'training-progress' % 是否顯示訓(xùn)練可視化的過(guò)程圖
              SequenceLength: 'longest'
        SequencePaddingValue: 0
    SequencePaddingDirection: 'right'
        DispatchInBackground: 0
     ResetInputNormalization: 1
     ```
     
## 2.3 trainNetwork
[官方文檔講解](https://www.mathworks.com/help/deeplearning/ref/trainnetwork.html)
簡(jiǎn)單的使用格式如下,其他格式參考官方文檔講解
```matlab
net = trainNetwork(X,Y,layers,options)
% X是訓(xùn)練集的數(shù)據(jù)集,Y是訓(xùn)練集的標(biāo)簽集

2.4 predict和classify

這兩個(gè)函數(shù)是用來(lái)調(diào)用神經(jīng)網(wǎng)絡(luò)模型的,用測(cè)試集去測(cè)試輸出結(jié)果。predict函數(shù)搭配回歸神經(jīng)網(wǎng)絡(luò)使用,就是神經(jīng)網(wǎng)絡(luò)的最后一層是regressionLayer,如2.1例子中42行就是替換classify為predict。classify函數(shù)搭配分類神經(jīng)網(wǎng)絡(luò),就是神經(jīng)網(wǎng)絡(luò)中的最后一層是classificationLayer。

result = classify(net,testData)
% 第一個(gè)參數(shù)是訓(xùn)練的網(wǎng)絡(luò)模型
% 第二個(gè)參數(shù)是測(cè)試的數(shù)據(jù)
% result表示用神經(jīng)網(wǎng)絡(luò)處理TestData最終的輸出結(jié)果

3 參數(shù)選擇原則

(1)首先開(kāi)發(fā)一個(gè)過(guò)擬合的模型
? 添加更多的層
? 讓每一層變得更大
? 訓(xùn)練更多的輪次
(2)然后抑制過(guò)擬合
? dropout
? 正則化
? 圖像增強(qiáng)
(3)再次調(diào)節(jié)超參數(shù)
? 學(xué)習(xí)速率
? 隱藏層單元數(shù)
? 訓(xùn)練輪次
超參數(shù)的選擇是一個(gè)經(jīng)驗(yàn)不斷測(cè)試的結(jié)果,經(jīng)典機(jī)器學(xué)習(xí)的方法,如特征工程、增加訓(xùn)練數(shù)據(jù)要做交叉驗(yàn)證。

4 構(gòu)建網(wǎng)絡(luò)的總原則

? 增大網(wǎng)絡(luò)容量,直到過(guò)擬合
? 采取措施抑制過(guò)擬合
? 繼續(xù)增大網(wǎng)絡(luò)容量,直到過(guò)擬合

上述內(nèi)容就是Matlab Deep Network Designer APP搭建神經(jīng)網(wǎng)絡(luò)及相關(guān)函數(shù)是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI