MATLAB神經網路工具箱使用介紹

疯狂学习GIS發表於2024-06-20

  本文介紹MATLAB軟體中神經網路擬合Neural Net Fitting)工具箱的具體使用方法。

  在MATLAB人工神經網路ANN程式碼這篇文章中,我們介紹了MATLAB軟體中神經網路(ANN)的純程式碼實現;而在MATLAB軟體中,其實基於神經網路擬合工具箱,就可以點點滑鼠實現神經網路的迴歸。本文就對基於這一工具箱實現神經網路迴歸的具體方法加以詳細講解。

  當然,在首先匯入我們的訓練資料時,還是需要用到幾行程式碼的。不過這裡的程式碼整體而言也非常簡單,其實就是基於readtable()函式,讀取儲存於Excel中的資料;隨後,將因變數Y與自變數X提取出來備用。這裡有一點需要注意:大家的自變數如果有多個(比如我這裡就有data_NDVIdata_Soil兩個自變數),需要將這兩個自變數合併,放在一個變數X中。

clc;
close;
clear all;

point_file="E:/LST/01_Data/Analysis/Point_Field.xlsx";

data_all=readtable(point_file);
data_Y=data_all(:,3);
data_NDVI=data_all(:,4);
data_Soil=data_all(:,5);
Y=table2array(data_Y);
N=table2array(data_NDVI);
S=table2array(data_Soil);
X=[N S];

  隨後,我們執行這裡的程式碼。如下圖所示,可以看到我的因變數Y與自變數X都準備完畢了。

image

  接下來,我們在MATLAB軟體頂部選單中,依次選擇“APP”→“Neural Net Fitting”,開啟神經網路擬合工具箱

  開啟後的介面如下所示。

  其中,如果我們點選上圖左下角的“Neural Network Start”選項,就可以來到如下圖所示的“Neural Network Start”介面。可以這麼理解,“Neural Network Start”是MATLAB中神經網路工具箱的一個整體的開始介面,而我們這裡需要用到的神經網路擬合工具箱Neural Net Fitting)就是該開始介面下屬的其中一個工具。

  言歸正傳,我們在上上圖中點選“Next”,就可以看到如下所示的資料篩選介面。該介面就是我們用來選擇輸入資料(自變數)、輸出資料(因變數)的地方。而無論是輸入資料還是輸出資料,可以看到,我們都需要用滑鼠在MATLAB軟體的工作區中找到對應的變數。這也是為什麼在本文一開始,我們需要先執行一段程式碼,將資料從Excel中讀取到MATLAB中去的原因。

  點選選擇完畢資料後,一定注意需要對資料的維度進行選擇。換句話說,就是你的輸入與輸出資料矩陣中,不同行代表的是不同樣本,還是同一樣本的不同屬性(不同自變數)。

  隨後,選擇“Next”,進入驗證集與測試集資料的劃分介面。在這個介面中,我們需要對驗證集與測試集資料的比例進行劃分(為什麼要劃分資料這裡就不再贅述啦,而且這一個介面的右側也有每一個資料集合的作用,大家不理解的話參考一下就明白了)。一般的,在資料量比較少的情況下(我記得有說少於一百萬條資料,就算資料比較少,當然肯定要看大家資料的具體情況),我們按照6:2:2的比例進行劃分即可;在資料量多的情況下,則可以按照98:1:1的比例來劃分。這裡大家就依據實際情況來劃分即可。

  隨後,點選“Next”,進入神經網路結構配置介面。在神經網路擬合工具箱中,我們僅僅只能對神經網路的隱藏層的神經元數量進行配置,而隱藏層的數量預設為1層,且還不能修改;而在MATLAB人工神經網路ANN程式碼這篇文章中,透過程式碼,我們不僅可以對神經元數量進行調整,還可以配置隱藏層的具體層數

  這裡建議大家先按照預設的神經元數量10進行填寫;等後期執行過模型幾次後,根據模型的精度執行時間,再返回這裡對神經元的數量進行二次調整。

  隨後,點選“Next”,就進入神經網路模型的訓練介面了。這裡我們可以選擇訓練神經網路的具體演算法,但一共僅僅有三個選項,包括Levenberg-Marquardt演算法、Bayesian regularization演算法、Scaled conjugate gradient backpropagation演算法;同樣是在MATLAB人工神經網路ANN程式碼這篇文章中,透過程式碼,我們可以選擇的演算法就有很多了,有十餘種。

  這裡大家結合每一種演算法的具體介紹,依據自己的資料實際情況來選擇即可。不過一般的,應該選擇第一種演算法——Levenberg-Marquardt演算法的場合會多一些。選擇演算法完畢後,點選“Train”就可以開始訓練模型。

  模型訓練完畢後,會彈出如下所示的訓練結果視窗。

  且在神經網路模型的訓練介面的右側會出現精度評定指標的具體數值;數值下方的三個選項可以用來繪製擬合情況圖。

  如果對這個模型非常不滿意,就可以多次重複訓練,還可以更改隱藏層神經元數量、訓練演算法等進行重新建模。如果對模型大體滿意,點選“Next”即可進入模型調整介面。

  這個介面可以更方便地進行重複訓練、修改隱藏層神經元個數、擴大或更換資料集等,從而完善大家的模型。

  如果沒有問題,點選“Next”即可進入解決方案部署介面(應該是這麼翻譯的)。這個介面聽起來高深,其實說簡單點,就是將我們剛剛訓練好的神經網路,以不同的形式來匯出。

  但我對於我個人而言,這個頁面其實沒有很大的作用——因為這裡匯出的並不是純粹的神經網路MATLAB程式碼,而是一些和開發、部署工具有關的函式或圖表;這裡或許對於開發人員而言比較有用,對於我們這種只是單純想訓練一個神經網路模型的人而言,直接跳過就可以。

  隨後,點選“Next”即可進入神經網路擬合工具箱的最後一個介面——結果儲存介面。

  這個介面是我們訓練這麼久神經網路模型的最終目標。首先,“Generate Scripts”一欄可以自動生成一個MATLAB程式碼;有了這個程式碼,以後我們再想對這個結構的神經網路模型進行訓練,就不用再在神經網路擬合工具箱中點來點去了,直接把新的輸入資料、輸出資料匯入到程式碼裡,修改程式碼中對應的引數即可。例如,我們一直提及的MATLAB人工神經網路ANN程式碼這篇文章,其中的程式碼其實就是透過這個選項來生成的。

  接下來第二個方框“Save Data to Workspace”,是對本次你訓練神經網路模型過程中一些關鍵引數進行儲存的選項。假如大家今後不想用程式碼來複現這個神經網路,而是想直接將訓練好的模型儲存下來,下一次直接用一兩句程式碼呼叫它,那就選擇在這裡將神經網路模型物件儲存下來就好(建議選擇最後一項,即以結構體的格式儲存全部的引數,防止之後需要某個引數了結果發現沒儲存)。

  這裡我認為有必要說明一下儲存神經網路程式碼神經網路引數的區別。如果我們在“Generate Scripts”一欄儲存了神經網路的程式碼,那麼今後我們呼叫這個程式碼,並不是直接呼叫我們本次訓練好的神經網路模型,而是再用不同的資料,不透過這個神經網路擬合工具箱而是透過修改程式碼的方法,對神經網路模型進行除錯,還可以修改模型的各項引數(比如隱藏層數量、神經元數量、訓練演算法等)。而如果我們在“Save Data to Workspace”一欄儲存了神經網路模型這個引數,那麼今後再呼叫這個神經網路的時候,神經網路模型裡的各項引數就不會再變了,就永永遠遠是你現在訓練好的這個引數。說得簡單一點,前者是儲存除錯神經網路模型的程式碼,後者就是儲存你現在訓練好的這個神經網路模型

  儲存完畢後,點選“Finish”即可退出神經網路擬合工具箱。此外,如果大家沒有儲存任何神經網路程式碼或引數的話,系統還會很貼心地彈出一個提示框,詢問你是否確認退出。

  至此,大功告成。

相關文章