① 求教!!用MATLAB建立一個簡單的bp神經網路
可以運行
你看看是不是你的版本有問題?
net =
Neural Network object:
architecture:
numInputs: 1
numLayers: 2
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
numOutputs: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1x1 cell} of inputs
layers: {2x1 cell} of layers
outputs: {1x2 cell} containing 1 output
biases: {2x1 cell} containing 2 biases
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight
② 如何快速學習matlab BP神經網路
如何快速學習matlab BP神經網路
我不知道你是要深入的了解其原理,還是只是用用而已版……
對於我來說權,我基本上是著眼於BP神經網路的應用,分類啊,擬合(預測)啊。而對於原理,我只能說我不是很了解,看過一些,但是似懂非懂。
綜合,我推薦《MATLAB神經網路43個案例分析》這本書吧,大部分是著眼於應用,即直接調用MATLAB的函數來實現神經網路的搭建,訓練,應用,而這本書的第一章給出了自己實現BP神經網路的例子和程序(不調用MATLAB的神經網路方面的函數)
要深入原理的話,讀原碼最好了,
不過讀matlab工具箱的原碼比較繁雜,你可以看這個簡化版的:
③ BP神經網路matlab源程序代碼講解
newff 創建前向BP網路格式:
net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
其中:PR —— R維輸入元素的R×2階最大最小值矩陣; Si —— 第i層神經元的個數,共N1層; TFi——第i層的轉移函數,默認『tansig』; BTF—— BP網路的訓練函數,默認『trainlm』; BLF—— BP權值/偏差學習函數,默認』learngdm』 PF ——性能函數,默認『mse』;(誤差)
e.g.
P = [0 1 2 3 4 5 6 7 8 9 10];T = [0 1 2 3 4 3 2 1 2 3 4];
net = newff([0 10],[5 1],{'tansig' 'purelin'});net.trainparam.show=50; %每次循環50次net.trainParam.epochs = 500; %最大循環500次
net.trainparam.goal=0.01; %期望目標誤差最小值
net = train(net,P,T); %對網路進行反復訓練
Y = sim(net,P)Figure % 打開另外一個圖形窗口
plot(P,T,P,Y,'o')
④ 網上哪裡有講解用MATLAB編BP神經網路的視頻啊
給你一個論壇,上面有很多高手,會幫助你解答問題的,
上面好像有神經網路的內視頻容講解!!!
http://www.ilovematlab.cn/
下面這個網址是下載視頻的地址,不過應該是你先得注冊才能看!
http://www.ilovematlab.cn/forum-43-1.html
⑤ MATLAB中BP神經網路的訓練演算法具體是怎麼樣的
先用newff函數建立網路,再用train函數訓練即可。
1)正向傳播:輸入樣本->輸入層版->各隱層(處理)-權>輸出層
注1:若輸出層實際輸出與期望輸出(教師信號)不符,則轉入2)(誤差反向傳播過程)
2)誤差反向傳播:輸出誤差(某種形式)->隱層(逐層)->輸入層
其主要目的是通過將輸出誤差反傳,將誤差分攤給各層所有單元,從而獲得各層單元的誤差信號,進而修正各單元的權值(其過程,是一個權值調整的過程)。
BP演算法實現步驟(軟體):
1)初始化
2)輸入訓練樣本對,計算各層輸出
3)計算網路輸出誤差
4)計算各層誤差信號
5)調整各層權值
6)檢查網路總誤差是否達到精度要求
滿足,則訓練結束;不滿足,則返回步驟2)
註:改進演算法—增加動量項、自適應調整學習速率(這個似乎不錯)及引入陡度因子。
⑥ 用matlab實現BP神經網路,求全部過程,謝謝大神
所有BP神經網路的訓練方抄法都是相似的,僅僅是將樣本和網路結構進行修改。你這種情況,只需要將輸入P與輸出T進行修改,並將輸入節點數設為3,輸出節點數設為1,即可。請參考附件的代碼。
newff函數的格式為:
net=newff(PR,[S1 S2 ...SN],{TF1 TF2...TFN},BTF,BLF,PF),函數newff建立一個可訓練的前饋網路。輸入參數說明:
PR:Rx2的矩陣以定義R個輸入向量的最小值和最大值;
Si:第i層神經元個數;
TFi:第i層的傳遞函數,默認函數為tansig函數;
BTF:訓練函數,默認函數為trainlm函數;
BLF:權值/閥值學習函數,默認函數為learngdm函數;
PF:性能函數,默認函數為mse函數。
⑦ 用BP神經網路建立數學模型,MATLAB實現,怎樣得到輸入到輸出的計算公式
clear;
%輸入數據矩陣
p1=zeros(1,1000);
p2=zeros(1,1000);
for i=1:1000
p1(i)=rand;
p2(i)=rand;
end
p=[p1;p2];
%目標(輸出)數據矩陣
t = cos(pi*p1)+sin(pi*p2);
%對訓練集中的輸入數據矩陣和目標數據矩陣進行歸一化處理
[pn, inputStr] = mapminmax(p);
[tn, outputStr] = mapminmax(t);
%建立BP神經網路
net = newff(pn, tn, [200,10]);
%每10輪回顯示一次結果
net.trainParam.show = 10;
%最大訓練次數
net.trainParam.epochs = 5000;
%網路的學習速率
net.trainParam.lr = 0.05;
%訓練網路所要達到的目標誤差
net.trainParam.goal = 10^(-8);
%網路誤差如果連續6次迭代都沒變化,則matlab會默認終止訓練。為了讓程序繼續運行,用以下命令取消這條設置
net.divideFcn = '';
%開始訓練網路
net = train(net, pn, tn);
%獲取網路權值、閾值
netiw = net.iw;
netlw = net.lw;
netb = net.b;
w1 = net.iw{1,1}; %輸入層到隱層1的權值
b1 = net.b{1} ; %輸入層到隱層1的閾值
w2 = net.lw{2,1}; %隱層1到隱層2的權值
b2 = net.b{2} ; %隱層1到隱層2的閾值
w3 = net.lw{3,2}; %隱層2到輸出層的權值
b3 = net.b{3} ;
in = mapminmax('apply',[0.1;0.5],inputStr);
%用公式計算輸出
y=w3*tansig(w2*tansig(w1*in+b1)+b2)+b3;
y1=mapminmax('reverse',y,outputStr);
%用網路驗證計算結果
out = sim(net,in);
out1=mapminmax('reverse',out,outputStr);
⑧ 如何用matlab訓練BP神經網路
net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes,
PR - Rx2 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 - Backprop network training function, default = 'trainlm'.
BLF - Backprop weight/bias learning function, default = 'learngdm'.
PF - Performance function, default = 'mse'.
然後train一下就可以了,具體其他參數查閱相關文檔,一般有前四個參數就夠了。
看一個簡單的例子:
有兩個向量或者矩陣,pn和tn:
net=newff(minmax(pn),[3,1],{'tansig','purelin'},'trainlm');
net.trainParam.epochs=1000;
net.trainParam.goal =1e-5;
net=train(net,pn,tn);
照葫蘆畫瓢就行,具體參數意義就不說了,自己查閱matlab幫助。
⑨ 求用matlab編BP神經網路預測程序
P=[。。。];輸入T=[。。。];輸出
% 創建一個新的前向神經網路
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')
% 當前輸入層權值和閾值
inputWeights=net_1.IW{1,1}
inputbias=net_1.b{1}
% 當前網路層權值和閾值
layerWeights=net_1.LW{2,1}
layerbias=net_1.b{2}
% 設置訓練參數
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-3;
% 調用 TRAINGDM 演算法訓練 BP 網路
[net_1,tr]=train(net_1,P,T);
% 對 BP 網路進行模擬
A = sim(net_1,P);
% 計算模擬誤差
E = T - A;
MSE=mse(E)
x=[。。。]';%測試
sim(net_1,x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
不可能啊 我2009
⑩ matlab BP神經網路
從原理上來說,神來經網路是可以預自測未來的點的。
實際上,經過訓練之後,神經網路就擬合了輸入和輸出數據之間的函數關系。只要訓練的足夠好,那麼這個擬合的關系就會足夠准確,從而能夠預測在其他的輸入情況下,會有什麼樣的輸出。
如果要預測t=[6 7]兩點的R值,先以t=[1 2 3 4 5]作為輸入,R=[12 13 14 14 15]作為輸出,訓練網路。訓練完成之後,用t=[2 3 4 5 6]作為輸入,這樣會得到一個輸出。不出意外的話,輸出的數組應該是[13 14 14 15 X],這里的X就是預測t=6時的R值。然後以t=[3 4 5 6 7]作為輸入,同理得到t=7時候的R值。
根據我的神經網路預測,t=6時,R=15,t=7時,R=15。我不知道這個結果是否正確,因為神經網路通常需要大量的數據來訓練,而這里給的數據似乎太少,可能不足以擬合出正確的函數。