天天看點

Matlab神經網絡工具箱學習之一 - KK4SBB

Matlab神經網絡工具箱學習之一

1、神經網絡設計的流程

2、神經網絡設計四個層次

3、神經網絡模型

4、神經網絡結構

5、建立神經網絡對象

6、配置神經網絡的輸入輸出

7、了解神經網絡工具箱的資料結構

8、神經網絡訓練

1、神經網絡設計的流程

  神經網絡設計可以分為七個步驟:

    a. 采集資料

    b. 建立網絡

    c. 配置網絡參數

    d. 初始化權重和偏置

    e. 訓練神經網絡

    f. 驗證網絡

    g. 使用網絡

2、神經網絡設計四個層次

  這裡的層次主要隻Matlab的神經網絡工具箱和相關指令

    a. 第一層是“Getting Started with Neural Network Toolbox”裡面提到的GUI,可以友善、快速的解決拟合、模式識      别、聚類、時序分析等問題。

    b. 第二層是使用指令行輸入。

    c. 第三層是工具箱的個性化配置,根據需求選擇參數。

    d. 第四層是自己修改.M檔案,以适應需要解決的問題。

3、神經網絡模型

  基本神經元

    神經網絡的最基本結構是神經元。下圖是單個神經元的圖示。一個神經元包含了輸入p,此輸入的權重w,外加偏置b,這  三項元素組成了轉移方程f的輸入,經過f的計算,得到輸出a。網絡的權重方程通常是取w和p的乘積,有時也使用|w-p|(參  見help nnweight)。網絡的輸入方程n一般是各項wp的累加和,有時也用乘積(參見help nnnetinput)。

    神經網絡的訓練目的就是疊代計算,每次調整w和b的值,使得網絡的輸出結果和目标結果的誤差最小。

    

Matlab神經網絡工具箱學習之一 - KK4SBB

  轉移方程

    常用的轉移方程有兩種,線性轉移方程和Log-sigmoid轉移方程。前一種多用于網絡最後一層(輸出層),而後者多用  于網絡的中間層(參見help nntransfer)。

    

Matlab神經網絡工具箱學習之一 - KK4SBB

  神經元的向量輸入

    通常每個節點的輸入p會是一個多元(N維)的向量,是以每個節點的權重也是N維的向量w,偏置b還是一個常數。轉移  方程的輸入就可以寫為n = w*p + b,n仍舊是一個标量。

    

Matlab神經網絡工具箱學習之一 - KK4SBB

 

4、神經網絡結構

  神經網絡按照結構可以分為單層網絡和多層網絡,每一層網絡又可以包含多個節點(神經元),最後構成一個完整的模型。

  一層網絡

    下圖是一層網絡的模型圖,輸入有R個元素,每個元素Pr是一個向量。中間層有S個節點(神經元),Wsr表示第S個節  點對第r個輸入的權重。bs表示第s個節點的偏置。權重W就變成了一個SxR的矩陣。P是RxN的矩陣,b是一個S維的向量。

  

Matlab神經網絡工具箱學習之一 - KK4SBB
Matlab神經網絡工具箱學習之一 - KK4SBB

  多層網絡

    多層網絡類似于是多級運算放大電路,把多個一層網絡串聯。每一層都有一個權重矩陣W和偏置向量b。上一層的輸出作為下一層的輸入。

  

Matlab神經網絡工具箱學習之一 - KK4SBB

  

5、建立神經網絡對象

  建立一個簡單的網絡模型可以用feedforwardnet( )函數

  net = feedforwardnet

  這時會顯示很多的模型參數。dimensions表示整個網絡的結構。connections儲存網絡各節點之間的連接配接狀态,0表示沒有連接配接,1表示有連接配接。layerConnect矩陣是各個網絡層之間的連接配接,行表示目标層,清單示源層。

  關鍵的幾個參數是inputs, layers, outputs, biases, inputWeights and layerWeights.

6、配置神經網絡的輸入輸出

  網絡的輸入輸出配置可以用configure()函數。

  net1 = configure(net, input, target_output);

%% an example of BP network

load data input output

% shuffle index

k = rand(1,2000);

[m,n] = sort(k);

% prepare for training data 1900 out of 2000

input_train=input(n(1:1900),:)\';

output_train=output(n(1:1900));

% prepare for test data 100 out of 2000

input_test=input(n(1901:2000),:)\';

output_test=output(n(1901:2000));

% normalize training and test data to [-1, 1]

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);

% initial NN model and set parameters

net=newff(inputn,outputn,5);

net.trainParam.epochs=100; % iteration times

net.trainParam.lr=0.1; % learning rate

net.trainParam.goal=0.00004;

net=train(net,inputn,outputn);

% normalize test data

inputn_test=mapminmax(\'apply\',input_test,inputps);

% predict output

an=sim(net,inputn_test);

% de-normalize test data

BPoutput=mapminmax(\'reverse\',an,outputps);

% plot predict output

figure(1)

plot(BPoutput,\':og\')

hold on

plot(output_test,\'-*\');

legend(\'test output\',\'expected output\')

title(\'BP neural network test output\',\'fontsize\',12)

ylabel(\'output\',\'fontsize\',12)

xlabel(\'sample\',\'fontsize\',12)

% plot errors

error=BPoutput-output_test;

figure(2)

plot(error,\'-*\')

title(\'BP neural network error\',\'fontsize\',12)

ylabel(\'error\',\'fontsize\',12)

xlabel(\'samole\',\'fontsize\',12)

posted on

2014-02-28 10:32 

KK4SBB 

閱讀(2473) 

評論(0) 

編輯 

收藏 

舉報

Matlab神經網絡工具箱學習之一 - KK4SBB