資源簡介
自己做的神經網絡逼近函數的小例子,非常適合初學者理論與編程對照學習!!
代碼片段和文件信息
close?all;
clc;
t1=[0:0.1:pi]‘;%自變量t1
y=sin(t1);%因變量y
size_n=size(t11);%輸入樣本的個數
train_num=10;%訓練樣本個數
hid_num=5;%隱含層神經單元個數
w=0.3*zeros(1hid_num);%隱含層-輸出層的權值
b=0.8*ones(1hid_num);%節點基寬
%?center=[2.490.831.693.25-0.02];?%基函數中心?sin?pi
%?center=[6.862.4018.241.644.63];?%基函數中心?sin?2pi
center=rand(1hid_num);
eta_w=0.25*ones(1hid_num);%學習率η
eta_b=0.25*ones(1hid_num);
eta_c=0.25*ones(1hid_num);
alpha=0.5;%動量因子α
maxgen=800;%最大迭代次數
t2=1:1:maxgen;
error_goal=0.000000000000000000000000000000000000000001;%誤差精度要求
mse=zeros(1maxgen);
wk_1=w;wk_2=w;%前1?2?時刻的權值
bk_1=b;bk_2=b;%前1?2?時刻的基寬值
ck_1=center;ck_2=center;%前1?2時刻的中心值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??提取訓練樣本??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for?i=1:train_num
????seq=floor(i/train_num*size_n);
????train_in(i)=t1(seq:);
????train_out(i)=y(seq:);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??迭代學習參數??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gen=0;??
for?i=1:maxgen
????gen=gen+1;
????B(gen:)=b;
????W(gen:)=w;
????C(gen:)=center;
????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??訓練樣本??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
????for?j=1:train_num
????????for?k=1:hid_num
????????????h(k)=exp(-norm(train_in(j)-center(k))^2/(b(k)^2));
????????end
????????ye(j)=w*h‘;
????????%%%%%%%%%%%%%%%%%%%%%%%%??隱含層參數學習??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
????????for?k=1:hid_num
????????????e=train_out(j)-ye(j);??%定義誤差?????
????????????w(k)=wk_1(k)+eta_w(k)*e*h(k)+alpha*(wk_1(k)-wk_2(k));?%隱含層-輸出層的權值w學習公式???
????????????b(k)=bk_1(k)-eta_b(k)*(e*w(k)*h(k
評論
共有 條評論