Matlab神经网络十讲(8): 归一化、权重读取、(非)线性网络设计
生活随笔
收集整理的這篇文章主要介紹了
Matlab神经网络十讲(8): 归一化、权重读取、(非)线性网络设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.關于歸一化問題
大家都知道train里面對數據先進行了歸一化再來計算的。訓練好神經網絡后,用sim函數可以得到準確的值,但是為什么我們自己寫算法來計算就得不到計算結果呢?因為歸一化。? ??
clear all [x,t] = simplefit_dataset; net = feedforwardnet(10) net = train(net,x,t); %view(net) %y = net(x) %perf = perform(net,y,t) test_num = 5; xT = x(:,test_num); %xT為驗證數據 yt = t(test_num) yo = sim(net,xT)單獨設計歸一化、反歸一化代碼:
[x1 psx] = mapminmax(x); %注意 這里的x,t 是訓練數據 [t1 pst] = mapminmax(t); xT1 = mapminmax('apply',xT,psx); hi = net.IW{1} * xT1; hi = hi + net.b{1}; ho = tansig(hi); yi = net.LW{2,1} * ho; yi = yi + net.b{2}; yo2 = yi yo2_1 = mapminmax('reverse',yo2,pst) %輸出結果與yt yo 一致! MATLAB中歸一化原理:mapminmax按行逐行地對數據進行標準化處理,將每一行數據分別標準化到區間[ymin, ymax]內,其計算公式是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。如果某行的數據全部相同,此時xmax=xmin,除數為0,則Matlab內部將此變換變為y = ymin。
2.關于讀取網絡中的權重和偏置
net.IW{1,1}(2,1) : net.IW{1,1}是指輸入層和第一隱含層之間的網絡權重,(2,1)讀取該層間的每條路徑的權重。
net.LW{2,1}(2,1) : net.LW{2,1}是指第二隱含層與第一隱含層之間的網絡權重,(2,1)讀取該層間的每條路徑的權重。
net.b(n) : 讀取第n個隱含層的偏置。
3.關于線性網絡和非線性網絡
神經網絡的線性非線性主要是由傳輸函數組成。
MATLAB的神經網絡工具箱中包括兩個非線性函數logsig和tansig,以及一個線性函數purelin。
總結
以上是生活随笔為你收集整理的Matlab神经网络十讲(8): 归一化、权重读取、(非)线性网络设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业邮箱问题
- 下一篇: 简单的CreateRemoteThrea