㈠ matlab神經網路建立是無法正確調用gensim(net,-1)
字面是參數設置不對,但是官方工具箱不允許編譯,所以找不到具體錯在哪裡。
如果你用的matlab版本和教材上不一樣的話,有些工具箱的函數會更新。
以2010b版本為例,這個函數命令是這樣 [sysName,netName] = gensim(net,'InputMode','Workspace',...
'OutputMode','WorkSpace','SolverMode','Discrete');
我們安裝新版本的時候會把所有工具箱都更新,這樣很多函數(特別是simulink,神經網路工具箱中的)都會有一些變化。
您需要輸入help gensim,然後查看你現在版本的參數含義,再把教材當中對應的參數按格式填入。
㈡ matlab神經網路工具箱中newrb(P,T,GOAL,SPEARD,MN,DF)什麼意思
在command window輸入edit newrb,有如下參數說明:
<a href="matlab:doc newrb">newrb</a>(X,T,GOAL,SPREAD,MN,DF) takes these arguments,
% X - RxQ matrix of Q input vectors.
% T - SxQ matrix of Q target class vectors.
% GOAL - Mean squared error goal, default = 0.0.
% SPREAD - Spread of radial basis functions, default = 1.0.
% MN - Maximum number of neurons, default is Q.
% DF - Number of neurons to add between displays, default = 25.
㈢ 神經網路演算法中,參數的設置或者調整,有什麼方法可以採用
若果對你有幫助,請點贊。
神經網路的結構(例如2輸入3隱節點1輸出)建好後,一般就要求神經網路里的權值和閾值。現在一般求解權值和閾值,都是採用梯度下降之類的搜索演算法(梯度下降法、牛頓法、列文伯格-馬跨特法、狗腿法等等),這些演算法會先初始化一個解,在這個解的基礎上,確定一個搜索方向和一個移動步長(各種法算確定方向和步長的方法不同,也就使各種演算法適用於解決不同的問題),使初始解根據這個方向和步長移動後,能使目標函數的輸出(在神經網路中就是預測誤差)下降。 然後將它更新為新的解,再繼續尋找下一步的移動方向的步長,這樣不斷的迭代下去,目標函數(神經網路中的預測誤差)也不斷下降,最終就能找到一個解,使得目標函數(預測誤差)比較小。
而在尋解過程中,步長太大,就會搜索得不仔細,可能跨過了優秀的解,而步長太小,又會使尋解過程進行得太慢。因此,步長設置適當非常重要。
學習率對原步長(在梯度下降法中就是梯度的長度)作調整,如果學習率lr = 0.1,那麼梯度下降法中每次調整的步長就是0.1*梯度,
而在matlab神經網路工具箱里的lr,代表的是初始學習率。因為matlab工具箱為了在尋解不同階段更智能的選擇合適的步長,使用的是可變學習率,它會根據上一次解的調整對目標函數帶來的效果來對學習率作調整,再根據學習率決定步長。
機制如下:
if newE2/E2 > maxE_inc %若果誤差上升大於閾值
lr = lr * lr_dec; %則降低學習率
else
if newE2 < E2 %若果誤差減少
lr = lr * lr_inc;%則增加學習率
end
詳細的可以看《神經網路之家》nnetinfo里的《[重要]寫自己的BP神經網路(traingd)》一文,裡面是matlab神經網路工具箱梯度下降法的簡化代碼
若果對你有幫助,請點贊。
祝學習愉快
㈣ matlab神經網路工具箱問題
線性神經網路的構建:
net=newlin(PR,S,ID,LR)
PR--Rx2階矩陣,R個輸入元素的最小最大矩陣
S---輸出層神經元個數
ID--輸入延遲向量,默認值為[0]
IR--學習率,默認值為0.01
net = newlin([-1 1;-1 1],1); 表示設計的是一個雙輸入單輸出線性神經網路
P = [1 2 2 3; 2 1 3 1];表示輸入樣本有四個,每一列就是一個輸入樣本
又比如假設我們期望的輸出為 T=[1 2 3 4],則一個簡單的神經網路如下:
>>net = newlin([-1 1;-1 1],1);%創建初始網路
P=[1 2 2 3; 2 1 3 1]%輸入
T=[1 2 3 4]%期望的輸出
net=newlind(P,T);%用輸入和期望訓練網路
Y=sim(net,P)%模擬,可以看到模擬結果Y和期望輸出T的接近程度
P =
1 2 2 3
2 1 3 1
T =
1 2 3 4
Y =
0.8889 2.1667 3.0556 3.8889
樓主可以從《matlab神經網路與應用(第二版)》董長虹 開始入門神經網路的matlab實現
參考資料:《matlab神經網路與應用(第二版)》
㈤ matlab神經網路工具箱具體怎麼用
為了看懂師兄的文章中使用的方法,研究了一下神經網路
昨天花了一天的時間查怎麼寫程序,但是費了半天勁,不能運行,網路知道里倒是有一個,可以運行的,先貼著做標本
% 生成訓練樣本集
clear all;
clc;
P=[110 0.807 240 0.2 15 1 18 2 1.5;
110 2.865 240 0.1 15 2 12 1 2;
110 2.59 240 0.1 12 4 24 1 1.5;
220 0.6 240 0.3 12 3 18 2 1;
220 3 240 0.3 25 3 21 1 1.5;
110 1.562 240 0.3 15 3 18 1 1.5;
110 0.547 240 0.3 15 1 9 2 1.5];
0 1.318 300 0.1 15 2 18 1 2];
T=[54248 162787 168380 314797;
28614 63958 69637 82898;
86002 402710 644415 328084;
230802 445102 362823 335913;
60257 127892 76753 73541;
34615 93532 80762 110049;
56783 172907 164548 144040];
@907 117437 120368 130179];
m=max(max(P));
n=max(max(T));
P=P'/m;
T=T'/n;
%-------------------------------------------------------------------------%
pr(1:9,1)=0; %輸入矢量的取值范圍矩陣
pr(1:9,2)=1;
bpnet=newff(pr,[12 4],{'logsig', 'logsig'}, 'traingdx', 'learngdm');
%建立BP神經網路, 12個隱層神經元,4個輸出神經元
%tranferFcn屬性 'logsig' 隱層採用Sigmoid傳輸函數
%tranferFcn屬性 'logsig' 輸出層採用Sigmoid傳輸函數
%trainFcn屬性 'traingdx' 自適應調整學習速率附加動量因子梯度下降反向傳播演算法訓練函數
%learn屬性 'learngdm' 附加動量因子的梯度下降學習函數
net.trainParam.epochs=1000;%允許最大訓練步數2000步
net.trainParam.goal=0.001; %訓練目標最小誤差0.001
net.trainParam.show=10; %每間隔100步顯示一次訓練結果
net.trainParam.lr=0.05; %學習速率0.05
bpnet=train(bpnet,P,T);
%-------------------------------------------------------------------------
p=[110 1.318 300 0.1 15 2 18 1 2];
p=p'/m;
r=sim(bpnet,p);
R=r'*n;
display(R);
運行的結果是出現這樣的界面
點擊performance,training state,以及regression分別出現下面的界面
再搜索,發現可以通過神經網路工具箱來創建神經網路,比較友好的GUI界面,在輸入命令裡面輸入nntool,就可以開始了。
點擊import之後就出現下面的具體的設置神經網路參數的對話界面,
這是輸入輸出數據的對話窗
首先是訓練數據的輸入
然後點擊new,創建一個新的神經網路network1,並設置其輸入輸出數據,包括名稱,神經網路的類型以及隱含層的層數和節點數,還有隱含層及輸出層的訓練函數等
點擊view,可以看到這是神經網路的可視化直觀表達
創建好了一個network之後,點擊open,可以看到一個神經網路訓練,優化等的對話框,選擇了輸入輸出數據後,點擊train,神經網路開始訓練,如右下方的圖,可以顯示動態結果
下面三個圖形則是點擊performance,training state以及regression而出現的
下面就是simulate,輸入的數據是用來檢驗這個網路的數據,output改一個名字,這樣就把輸出數據和誤差都存放起來了
在主界面上點擊export就能將得到的out結果輸入到matlab中並查看
下圖就是輸出的兩個outputs結果
還在繼續挖掘,to be continue……
㈥ MATLAB神經網路工具箱,用同樣的數據、網路結構、初始參數,每次訓練的結構都不一樣
有一些邊緣數據靠近網路分類邊緣,會出現一些識別模糊的現象
㈦ BP神經網路工具箱process
每次訓練,網路的初始權值都不同,因此BP演算法的每次迭代、權值修正都不相同。可以認為每次訓練都充滿了隨機性,這也是有時訓練會陷入局部極小點,而有時並不會的原因。
performance就是指網路最後的性能,你之前設定的net.trainParam.goal=0.00001;就是這個指標。MATLAB訓練時測試樣本的輸出誤差達到這個設定值,訓練就停止了。
以右邊的值為准,中間框子里的值是不斷變化的,當走到最右端時就達到了預設目標。
㈧ 一個關於BP神經網路的問題,matlab中神經網路工具箱的初始權值和閥值是
訓練BP神經網路所採取的隨機初始參數確實是隨機的,在訓練過程中這些參數和權值都會朝著同一個大方向進行修正。例如你用BP神經網路來擬合曲線,找到輸入值與輸出值之間的線性規律,那麼在訓練的過程中這個擬合的曲線會不斷的調整其參數和權值直到滿足幾個預設條件之一時訓練停止。雖然這個訓練出來的結果有時候會有一定誤差,但都在可以接受的范圍內。
縮小誤差的一個方法是需要預先設置初始參數,雖然每次依然會得到不一樣的模型(只要參數是隨機修正的),但不同模型之間的差距會很小。另外可以反復訓練,找到一個自己覺得滿意的模型(可以是測試通過率最高,可以是平均結果誤差值最小)。
至於你說別人怎麼檢查你的論文結果,基本上都是通過你的演算法來重建模型,而且還不一定都用matlab來做,即便是用同樣的代碼都會出現不同的結果,何況是不同的語言呢?其實驗算結果最重要的是看測試時的通過率,例如在對一組新的數據進行測試(或預測)時,通過率達到95%,別人用其他的方式重建了你的模型也得到這樣的通過率,那麼你的演算法就是可行的。注意,在計算機專業的論文裡面大家看重的不是代碼,而是演算法。
補充一點:只要你訓練好了一個神經網路可以把這個神經網路以struct形式保存,這樣這個網路可以被反復使用,且每次對同一組測試數據的預測結果都會一樣。你也可以當做是檢測論文可行性的工具。
㈨ matlab 神經網路工具箱訓練參數的調試問題
可以檢查下網路的輸入矩陣和期望輸出矩陣,就是input 和target 。這兩個矩陣的列數要一樣。
㈩ MATLAB神經網路工具箱newff()函數相關問題,謝謝~~
newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
PR -- R x 2 matrix of min and max values for R input elements
Si -- Size of ith layer, for Nl layers
TFi -- Transfer function of ith layer, default = 'tansig'
BTF -- Backpropagation network training function,
default = 'traingdx'
BLF -- Backpropagation weight/bias learning function,
default = 'learngdm'
PF -- Performance function, default = 'mse
答:【我這幾天也在學習……】
1.是
2.是
3.是,[S1,S2...SN]代表隱含層和輸出層的數目
4.是
個人建議去MATLAB中文論壇下載視頻教程,很不錯~看過後肯定有收獲