六章Matlab与NNT使用范例.ppt
《六章Matlab与NNT使用范例.ppt》由会员分享,可在线阅读,更多相关《六章Matlab与NNT使用范例.ppt(39页珍藏版)》请在三一文库上搜索。
1、第六章Matlab與NNT使用範例,6.1 平行輸入及循序輸入之模擬 6.2 步進學習(Incremental learning)及 批次學習(Batch learning) 6.3 FIR濾波器及newlin的關係 6.4 頻率變動偵測(Frequency variation detection),6.1 平行輸入及循序輸入之模擬,平行輸入(Concurrent inputs)是指有許多組的輸入送至類神經網路,它的順序不重要。可以看成有這麼多組相同的類神經網路,而每一組輸入加在每一組類神經網路上。循序輸入(Sequential inputs)則與時間有關,第三組一定發生在第二組之後,它們的順
2、序不可任意對調,因此像是在火車站買票的人們,先來先買;插隊或自行對調,可能造成其後面或其中有些人因而買不到票(原來可以的)。不按原輸入順序送入則輸出的結果因之而變。另外兩個要說明的名詞一為動態網路(Dynamic networks)、一為靜態網路(Static networks)。所謂動態網路是指網路中包含有回授或有遲元件者,相反地兩者皆無的網路稱為靜態網路。平行輸入只能用在靜態網路,因為輸入的順序並不重要,但對動態網路,輸入前後關係影響很大,輸出完全大不相同。因此平行輸入加在動態網路上,要特別注意,並且用Cell array表示才正確。,6.1 平行輸入及循序輸入之模擬,平行輸入的範例如下:
3、 P=randn(2,4) %產生四組平行輸入(用一般矩陣表示,如2 4 3.5)。 P = -0.4326 0.1253 -1.1465 1.1892 -1.6656 0.2877 1.1909 -0.0376 net=newlin(minmax(P),1); %產生2-1的ADALINE net.IW1,1=1 2; net.b1=0.5; %設定某組W及b A=sim(net,P) %模擬NN得輸出 A = -3.2637 1.2007 1.7354 1.6139 Q=P(:,3) P(:,1:2) P(:,4) %把第三組往前調 Q = -1.1465 -0.4326 0.1253 1
4、.1892 1.1909 -1.6656 0.2877 -0.0376 A=sim(net,Q) %輸出結果相對應往前調 A = 1.7354 -3.2637 1.2007 1.6139,6.1 平行輸入及循序輸入之模擬,其次看看如何模擬循序輸入(用Cell表示,如2,4,-3.5): 如果NN中含有延遲輸入則輸入的秩序變成後重要如: P=1 2 3 4 5 %定義P為cell array P = 1 2 3 4 5 net=newlin(1 5,1,0 1); % 1 5為P中的最小值的最大值,newlin要知道輸入最小、最大值。再下來的1表示輸出層的神經元數目為1。0 1表示有遲輸入,如果
5、沒有任何延遲則應寫為0,也可以省畧;如果有一個延遲則應寫成0 1,若原信號為uk,那0 1表示除了uk外也有uk-1一起做輸入,如圖6.1-1所示。如果有兩個輸入延遲一併使用則寫為0 1 2,可視為輸入有0延遲即uk、1遲uk-1、2延遲uk-2共三輸入,其架構如圖6.1-2。如果輸入信號的維度為2,其架構会是圖6.1-3型式,此時之W應為14的Array(Why?)。,6.1 平行輸入及循序輸入之模擬,6.1 平行輸入及循序輸入之模擬,6.1 平行輸入及循序輸入之模擬,6.1 平行輸入及循序輸入之模擬,% 把所有偏壓b的連線打開如下 net.biasConnect=0; net.IW1,1=
6、1 2; %設定W A=sim(net,P) %NN結果也用cell array表示 A = 1 4 7 10 13 Q=1 3 2 4 5 %把2,3的次序對調 Q = 1 3 2 4 5 A=sim(net,Q) %哇!與上面的結果不一樣 A = 1 5 8 8 13 P=1:5 %如果P用一般陣列(Array)表示 P = 1 2 3 4 5 A=sim(net,P) %完全不靈光 A = 1 2 3 4 5 相信你要處理循序輸入時,用cell array表示!,6.1 平行輸入及循序輸入之模擬,更進一步說,如果有兩組不同的輸入P及Q,是否可寫成一組cell array以進行模擬? P=
7、1 2 3 4 5 P = 1 2 3 4 5 Q=1 3 2 4 5 Q = 1 3 2 4 5 % 可以!把它們集合在新的cell array中叫做R,定義如下 R=1 1 2 3 3 2 4 4 5 5 R = %它的表示法有點笨 1x2 double 1x2 double 1x2 double 1x2 double 1x2 double,6.1 平行輸入及循序輸入之模擬,% 這麼寫 R: ans = 1 1 %第一組 ans = 2 3 % 第二組 ans = 3 2 % 第三組 ans = 4 4 % 第四組 ans = 5 5 % 第五組 % 也可以用celldisp指令,顯示結果
8、仍然有點笨笨的。 celldisp(R) R1 = 1 1 R2 = 2 3 R3 = 3 2 R4 = 4 4 R5 = 5 5,6.1 平行輸入及循序輸入之模擬,% 看看NN輸出結果是正確的。 A=sim(net,R) A = 1x2 double 1x2 double 1x2 double 1x2 double 1x2 double celldisp(A) A1 = 1 1 A2 = 4 5 A3 = 7 8 A4 = 10 8 A5 = 13 13,6.2 步進學習及批次學習,步進學習是指每一筆輸入進來,經過計算、整型等過程,一直傳到輸出後,誤差得到了立刻計算dW及db,即修正量。批次
9、學習則要把一個批次中的每一筆誤差累積至總誤差,有了總誤差才做一次修正。前面討論過的適應瀘波器是屬於步進學習類。,6.2 步進學習及批次學習,在NNT中有两個學習法則,一為adapt,一為train。基本上adapt可以用在步進學習及批次學習,而train只能用在批次學習。首先討論adapt用在步進學習上。既然要一步一步學,則用cell array表示I/O data最好。,6.2 步進學習及批次學習,例如輸入為二維的x及y,輸出為t,且關係為 t=x+2y=1 2*(x y) 輸入有四組為(1,1)、(1,2)、(2,1)、(3,2),利用matlab很快找到其間關係值: P=1 1;1 2;
10、2 1;3 2 P = 1 1 2 3 1 2 1 2 T=1 2*P T = 3 5 4 7 P,T都是一般陣列宣告,故不合做步進學習用。,6.2 步進學習及批次學習,下面重新定義以cell array為主的P及T: P=1;1 1;2 2;1 3;2; T=3 5 4 7; 呼叫adapt的樣式為net,a,e,pf=adapt(net,P,T);,右邊的net是由呼叫newlin創出名叫net的網路架構,P為輸入,T為輸出。左邊的net是訓練完的網路,其中權重及偏壓己有變化。a為輸出,e為誤差記錄,pf為最終輸入延遲條件。P的第一元素(Entry)值最小為1最大為3,P的第二元素(Ent
11、ry)值最小為1最大為2,newff的第一函數輸入即為1 3;1 2,第二輸入的1代表輸出只有一個神經元,故為一維,第三輸入的0代表只有輸入圖樣;沒有任何延遲(Delay),如果有一個輸入Delay則應寫成0 1。第四輸入的0表示learning rate值,為0則不會學習。,6.2 步進學習及批次學習,下達如下: net=newlin(1 3;1 2,1,0,0); %如果寫得更清楚你會宣告如是 PMM=1 3;1 2;no_out=1;delays=0;learn_rate=0; net=newff(PMM,no_out,delays,learn_rate); %這樣是否更清楚? % 首先
12、設W及b皆為0始 net.IW1,1=0 0;net.b1=0; net,a,e,pf=adapt(net,P,T); %步進學習,總共4次 a %看結果 a = 0 0 0 0 %沒任何改善,因為沒學 e e = 3 5 4 7 pf pf = Empty cell array: 1-by-0 % 設定W及b的學習率(Learning rates) net.inputWeights1,1.learnParam.lr=0.1; net.biases1.learnParam.lr=0.1; net,a,e,pf=adapt(net,P,T); %再步進學習,6.2 步進學習及批次學習, a a
13、= %結果開始變了 0 1.2000 3.1000 5.6500 T T = 3 5 4 7 e e = %e=T-a 3 3.8000 0.9000 1.3500 pf pf = Empty cell array: 1-by-0 mse(e) %平均誤差平方 ans = 6.5181 % 再練四次 net,a,e,pf=adapt(net,P,T); T;a;e %這樣顯示比較好對照 ans = 3 5 4 7 3.5900 4.7740 4.7320 6.7080 -0.5900 0.2260 -0.7320 0.2920,6.2 步進學習及批次學習,mse(e) ans=0.2551 %
14、平均誤差平方已有改善了 % P一次有四組,每呼叫一次adapt,就做步進學習四次,這叫做一個pass,如果要連續100個passes,下達指令如下: net.adaptParam.passes = 100; net,a,e = adapt(net,P,T); T;a;e ans = %看來學得不錯了 3 5 4 7 3.0069 4.9976 4.0064 6.9944 -0.0069 0.0024 -0.0064 0.0056 mse(e) ans = 3.1450e-005 %誤差也變小了 net.IW1,1 %W值 ans = 1.0010 1.9937 net.b1 %b值 ans =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab NNT 使用 范例
链接地址:https://www.31doc.com/p-2582705.html