新手學習神經網路 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...