三層BP網路隨著訓練樣本增多 收斂變慢的問題

2021-08-19 15:12:00 字數 1839 閱讀 2927

新手學習神經網路 matlab寫程式 直接上程式 希望有大神能幫我改進程式加快收斂速度

rdw1=0;

rdw2=0;

data=get(handles.uitable1,'data');%%獲取訓練樣本和期望輸出

pp=data(:,1:ni);%%提取輸入

[m,n]=size(pp);%%  m 訓練樣本數 n 輸入維數

t=data(:,ni+1:ni+no);%%提取期望輸出

tt=t;

for i=1 :m

for j=1:no

t(i,j)=(t(i,j)-tmin(j))/(tmax(j)-tmin(j));

endend

t=t';

for i=1 :m

for j=1:ni

p(i,j)=(pp(i,j)-pmin(j))/(pmax(j)-pmin(j));

endend

p=p';

sam1=[p;ones(1,m)];

for i=1:a

in1=wb1*sam1;

out1=logsig(in1);       %%輸入層-隱藏層 傳遞函式logsig

sam2=[out1;ones(1,m)];

in2=wb2*sam2;

out2=logsig(in2);      %%隱藏層-輸出層 傳遞函式purelin

out3=out2';

for ii=1 :m

for jj=1:no

out(ii,jj)=out3(ii,jj)*(tmax(jj)-tmin(jj))+tmin(jj);

endend

err=tt-out;             %%計算誤差

mse1 = mse(err);      %%誤差函式 sse mse=sse/m

fprintf('第 %d 次迭代   誤差:  %f\n', i, mse1);

if mse1<=b||i==a  

%%判斷是否收斂

set(handles.uitable2,'data',out);

set(handles.uitable3,'data',err);

set(handles.uitable5,'data',wb1(1:d,1:ni));

set(handles.uitable6,'data',wb1(1:d,ni+1));

set(handles.uitable7,'data',wb2(1:no,1:d));

set(handles.uitable8,'data',wb2(1:no,d+1));

break;

end 

%%誤差反向傳播

delta2=err'.*dlogsig(in2,out2);%%隱藏層-輸出層 區域性梯度

delta1=wb2(:,1:end-1)'*delta2.*dlogsig(in1,out1);%%輸入層-隱藏層 區域性梯度

%%權值修改量

dw2=delta2*sam2';

dw1=delta1*sam1';

%%修改權值 引入動量因子避免陷入區域性最小值

if i==1

wb2=wb2+c*dw2;

wb1=wb1+c*dw1;

else

wb2=wb2+(1-e)*c*dw2 + e*rdw2;

wb1=wb1+(1-e)*c*dw1 + e*rdw1;

%%wb2=wb2+c*dw2 + e*rdw2;

%%wb1=wb1+c*dw1 + e*rdw1;

end%%記錄上一次權值修改量

rdw2=dw2;

rdw1=dw1;

end

三層網路架構

三層網路架構是採用層次化架構的三層網路。三層網路架構採用層次化模型設計,即將複雜的網路設計分成幾個層次,每個層次著重於某些特定的功能,這樣就能夠使乙個複雜的大問題變成許多簡單的小問題。三層網路架構設計的網路有三個層次 核心層 網路的高速交換主幹 匯聚層 提供基於策略的連線 接入層 將工作站接入網路 ...

防止過擬合(三) 資料增強(增加訓練樣本)

深度學習筆記 欠擬合 過擬合 防止過擬合 一 正則化 防止過擬合 二 dropout 增加資料集大小是解決過擬合最重要的途徑。但是收集樣本資料和標註往往是代價昂貴的,在有限的資料集上,通過資料增強技術可以增加訓練的樣本數量,獲得一定程度上的效能提公升。資料增強 data augmentation 是...

二層網路,三層網路

在企業的網路結構選擇中,有二層網路和三層網路結構兩種選擇。在這裡的二層 三層是按照邏輯拓撲結構進行的分類,並不是說iso七層模型中的資料鏈路層和網路層,而是指核心層,匯聚層和接入層,這三層都部署的就是三層網路結構,二層網路結構沒有匯聚層。只有核心層和接入層的二層網路結構模式執行簡便,交換機根據mac...