神經網路工具箱常用函式列表
1) 重要的感知器神經網路函式:
初始化: initp
訓練: trainp
模擬: simup
學習規則: learnp
2) 線性神經網路函式:
初始化: initlin
設計: solvelin
模擬: simulin
離線訓練: trainwh
線上自適應訓練: adaptwh
學習規則: learnwh
3) BP網路函式:
Initff: 初始化不超過3層的前向網路;
Simuff: 模擬不超過3層的前向網路;
Trainbp,trainbpx,trainlm:訓練BP(Trainbp:最慢;trainbpx:次之;trainlm:速度最快,但需要更多的儲存空間。)
Learnbp: 學習規則
4) 自組織網路
初始化: initsm
模擬: simuc
訓練: trainc:利用競爭規則訓練
trainsm:利用Kohonen規則訓練
5) 反饋網路(Hopfield網路)
模擬: simuhop
設計: solvehop
solvehop 設計Hopfield網路
solvelin 設計線性網路
rands 產生對稱隨機數
learnbp 反向傳播學習規則
learnh Hebb學習規則
learnp 感知層學習規則
learnwh Widrow-Hoff學習規則
initlin 線性層初始化
initp 感知層初始化
initsm 自組織對映初始化
plotsm 繪製自組織對映圖
trainbp 利用反向傳播訓練前向網路
trainp 利用感知規則訓練感知層
trainwh 利用Widrow-Hoff規則訓練線性層
trainsm 利用Kohonen規則訓練自組織對映
說明:本文件中所列出的函式適用於MATLAB5.3以上版本,為了簡明起見,只列出了函式名,若需要進一步的說明,請參閱MATLAB的幫助文件。1. 網路建立函式newp 建立感知器網路newlind 設計一線性層newlin 建立一線性層newff 建立一前饋BP網路newcf 建立一多層前饋BP網路newfftd 建立一前饋輸入延遲BP網路newrb 設計一徑向基網路newrbe 設計一嚴格的徑向基網路newgrnn 設計一廣義迴歸神經網路newpnn 設計一概率神經網路newc 建立一競爭層newsom 建立一自組織特徵對映newhop 建立一Hopfield遞迴網路newelm 建立一Elman遞迴網路2. 網路應用函式sim 模擬一個神經網路init 初始化一個神經網路adapt 神經網路的自適應化train 訓練一個神經網路3. 權函式dotprod 權函式的點積ddotprod 權函式點積的導數dist Euclidean距離權函式normprod 規範點積權函式negdist Negative距離權函式mandist Manhattan距離權函式linkdist Link距離權函式4. 網路輸入函式netsum 網路輸入函式的求和dnetsum 網路輸入函式求和的導數5. 傳遞函式hardlim 硬限幅傳遞函式hardlims 對稱硬限幅傳遞函式purelin 線性傳遞函式tansig 正切S型傳遞函式logsig 對數S型傳遞函式dpurelin 線性傳遞函式的導數dtansig 正切S型傳遞函式的導數dlogsig 對數S型傳遞函式的導數compet 競爭傳遞函式radbas 徑向基傳遞函式satlins 對稱飽和線性傳遞函式6. 初始化函式initlay 層與層之間的網路初始化函式initwb 閾值與權值的初始化函式initzero 零權/閾值的初始化函式initnw Nguyen_Widrow層的初始化函式initcon Conscience閾值的初始化函式midpoint 中點權值初始化函式7. 效能分析函式mae 均值絕對誤差效能分析函式mse 均方差效能分析函式msereg 均方差w/reg效能分析函式dmse 均方差效能分析函式的導數dmsereg 均方差w/reg效能分析函式的導數8. 學習函式learnp 感知器學習函式learnpn 標準感知器學習函式learnwh Widrow_Hoff學習規則learngd BP學習規則learngdm 帶動量項的BP學習規則learnk Kohonen權學習函式learncon Conscience閾值學習函式learnsom 自組織對映權學習函式9. 自適應函式adaptwb 網路權與閾值的自適應函式10. 訓練函式trainwb 網路權與閾值的訓練函式traingd 梯度下降的BP演算法訓練函式traingdm 梯度下降w/動量的BP演算法訓練函式traingda 梯度下降w/自適應lr的BP演算法訓練函式traingdx 梯度下降w/動量和自適應lr的BP演算法訓練函式trainlm Levenberg_Marquardt的BP演算法訓練函式trainwbl 每個訓練週期用一個權值向量或偏差向量的訓練函式11. 分析函式maxlinlr 線性學習層的最大學習率errsurf 誤差曲面12. 繪圖函式plotes 繪製誤差曲面plotep 繪製權和閾值在誤差曲面上的位置plotsom 繪製自組織對映圖13. 符號變換函式ind2vec 轉換下標成為向量vec2ind 轉換向量成為下標向量14. 拓撲函式gridtop 網路層拓撲函式hextop 六角層拓撲函式randtop 隨機層拓撲函式
學習面向MATLAB工具箱的人工神經網路的“同學”注意啦,以下是通過 help 命令,調出英文版的函式幫助檔案,通過整理出來的幾個中文版函式。
hardlim 硬限制型傳遞函式
用法
A = hardlim(N)
info = hardlim(code)
說明
hardlim 是一個傳遞函式,傳遞函式是通過層的網路輸入來計算輸出;
hardlim(N) 需要一組網路輸入N,N是一個S×Q的矩陣,由網路輸入向量組成,當N符合條件時,函式返回1,否則返回0;
hardlim(CODE) 返回CODE中每一條字串的有用資訊:
deriv 派生函式名
name 全名
output 輸出範圍
active 有效的輸入範圍
例項
下面的程式碼將告訴你如何建立hardlim傳遞函式的圖形
n=-5:0.1:5;
a=hardlim(n);
plot(n,a)
網路使用
你可以通過呼叫NEWP來建立一個使用了hardlim的標準網路;
通過設定網路層的傳遞函式為hardlim來改變網路結構,使得網路使用了hardlim;
任何情況下,可以呼叫SIM來模擬使用了hardlim的網路;
使用NEWP獲得模擬例項;
演算法
hardlim(n)=1,if n>=0
0,otherwise
purelin 線性傳遞函式
用法
A = purelin(N)
info = purelin(code)
說明
purelin 是一個傳遞函式,傳遞函式通過層的網路輸入來計算輸出;
purelin(N) 需要一組輸入N,N是一個S×Q的矩陣,有網路輸入向量組成,函式返回N
purelin(CODE) 返回CODE中每一條字串的有用資訊:
deriv 返回派生函式名
name 返回全名
output 返回輸出範圍
active 返回有效輸入範圍
例項
下面的程式碼用來建立purelin線性傳遞函式的圖形
n=-5:0.1:5;
a=purelin(n);
plot(n,a)
網路使用
你可以通過呼叫NEWLIN或NEWLIND來建立一個使用了purelin的標準網路;
通過設定網路層的傳遞函式為purelin來改變網路,使得網路層使用了purelin;
任何情況下,可以呼叫SIM來模擬使用了purelin的網路;
使用NEWLIN或NEWLIND獲得模擬例項;
演算法
purelin(n)=n
maxlinlr 線性層的最大學習速率
用法
lr = maxlinlr(P)
lr = maxlinlr(P,'bias')
說明
maxlinlr是用來為NEWLIN計算學習速率的
maxlinlr(P)需要一組引數P,P是一個R×Q的矩陣,由輸入向量組成;函式返回零偏差的線性層的最大學習速率,也就是說,網路只用P中的向量來訓練;
maxlinlr(P,'bias') 返回帶偏差bias的線性層的最大學習速率;
例項
下面我們定義了一個4組2元輸入向量來尋找一個帶偏差的線性層的最大學習速率:
P = [1 2 -4 7; 0.1 3 10 6];
lr = maxlinlr(P,'bias')
learnp感知器權值/偏差學習函式
用法
[dW,LS] = learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS] = learnp(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnp(code)
說明
learnp是感知器的權值/偏差學習函式;
learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) 需要多個輸入值
W是S×R的權矩陣(或者b,一個S×1的偏差向量)
P是R×Q的輸入向量(或1×Q的單位矩陣)
Z是S×Q的加權輸入向量
N是S×Q的網路輸入向量
A是S×Q的輸出向量
T是S×Q的層目標向量
E是S×Q的層誤差向量
gW是S×R的梯度引數
gA是S×Q的輸出梯度引數
D是S×S的神經元距離
LP是學習引數,為空,即LP=[]
LS是學習狀態,初始值也為空
dW是S×R的權(偏差)修正矩陣
LS是新的學習狀態
learnp(CODE) 返回CODE中每條字串的有用資訊
pnames 返回學習引數的名稱
pdefaults 返回預設的學習引數
needg 如果函式使用了gW或者gA時,返回1
例項
為一個具有二元輸入和三個神經元的層定義了一個隨機輸入P和誤差E
p = rand(2,1);
e = rand(3,1);
由於learnp計算權修正值僅需以上幾個值(參閱下面的演算法),這樣我們就可以計算權修正值了:
dW = learnp([],p,[],[],[],[],e,[],[],[],[],[])
網路使用
你可以使用NEWP來建立一個使用了learnp的標準網路;
定義一個自定義網路每一層的權值和偏差來學習learnp
1)設定網路訓練函式為trainb。網路訓練引數將自動成為trainb的預設引數。
2)設定網路適應函式為trains。網路適應引數將自動成為trains的預設引數。
3)設定網路輸入權值學習函式為learnp,設定網路層權值學習函式為learnp,設定網路偏差學習函式為learnp
(如果LEARNP沒有學習引數時,每一個權值和偏差的學習引數屬性將自動設定為空矩陣)
訓練網路(或者使網路具有適應性):
1)設定網路訓練引數(網路適應引數)的效能為期望值;
2)呼叫train(adapt);
使用NEWP獲得適應性和訓練例項;
演算法
learnp根據感知器學習規則,通過神經元的輸入向量P和誤差向量E,計算一個給定的神經元的權修正值dW:
dw = 0, if e = 0
= p',if e = 1
= -p',if e = -1
以上過程可總結為:
dw=e*p'
learnwh 威德羅-霍夫 權值/偏差學習函式
用法
[dW,LS] = learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS] = learnwh(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnwh(code)
說明
learnwh 是威德羅-霍夫 權值/偏差學習函式,遵循規則或最小均方差演算法(LMS);
learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) 需要多個輸入,如下:
W —— S×R的權矩陣(或b,S×1的偏差向量)
P —— R×Q的輸入向量(或1×Q的單位向量)
Z —— S×Q的權輸入向量
N —— S×Q的網路輸入向量
A —— S×Q的輸出向量
T —— S×Q的層目標向量
E —— S×Q的層誤差向量
gW —— S×R的梯度引數
gA —— S×Q的輸出梯度效能
D —— S×S的神經元距離
LP —— 學習引數,為空,即LP=[]
LS —— 學習狀態,初始LS=[]
函式返回值
dW —— S×R的權(偏差)修正矩陣
LS —— 新的學習狀態
學習過程根據learnwh的學習引數進行,學習速率的預設值為0.01
learnwh(CODE) 返回CODE中每一條字串的有用資訊:
pname —— 返回學習引數的名稱
pdefault —— 返回預設的學習引數
needg —— 如果函式使用了gW或gA時,返回1
例項
下面的例子我們為一個具有2元輸入和3個神經元的層定義了一個隨機輸入向量P、誤差向量E,以及學習速率 lp.lr;
p = rand(2,1);
e = rand(3,1);
lp.lr = 0.5;
由於learnwh計算權修正值僅需要以上幾個值(參閱下面的演算法),這樣我們就可以計算權修正值了:
dW = learnwh([],p,[],[],[],[],e,[],[],[],lp,[])
網路使用
你可以通過NEWLIN來建立一個使用了learnwh的標準網路;
定義一個自定義網路中每一層的權值和偏差來學習learnwh:
1)設定網路學習函式為trainb。網路訓練引數將自動成為trainb的預設引數。
2)設定網路適應性函式為trains。網路適應引數將自動成為trains的預設引數。
3)設定每一網路輸入權值的學習函式為learnwh,設定每一網路層權值的學習函式為learnwh,設定網路偏差學習函式為learnwh。每一個權值和偏差學習引數的效能將自動被設定為learnwh的預設引數。
訓練網路(或使網路具有適應性):
1)設定網路訓練引數(或網路適應引數)的效能為期望值;
2)呼叫train(adapt);
使用NEWLIN獲得適應性或訓練例項;
演算法
learnwh根據WH學習規則,通過神經元的輸入向量P、誤差向量E以及權值(偏差)的學習引數LR,計算給定神經元的權修正值:
dw=lr*e*pn