?? 5-5-2.m
字號(hào):
%初始化正向權(quán)值w和反向權(quán)值v
w=rands(18,2)/2+0.5;
v=rands(5,18)/2+0.5;
%輸入向量P和目標(biāo)向量T
P=[0 0;0.5 0.5;0 0.5;1 3;0.5 1;1 0.5];
T=[1 0 0 0 0;1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
T_out=T;
%設(shè)定學(xué)習(xí)步數(shù)為1000次
epoch=1000;
%歸一化輸入向量P
for i=1:6
if P(i,:)==[0 0]
P(i,:)=P(i,:);
else
P(i,:)=P(i,:)/norm(P(i,:));
end
end
%開(kāi)始訓(xùn)練
while epoch>0
for j=1:6
%歸一化正向權(quán)值w
for i=1:18
w(i,:)=w(i,:)/norm(w(i,:));
s(i)=P(j,:)*w(i,:)';
end
%求輸出為最大的神經(jīng)元,即獲勝神經(jīng)元
temp=max(s);
for i=1:18
if temp==s(i)
count=i;
end
end
%將所有競(jìng)爭(zhēng)層神經(jīng)元的輸出置零
for i=1:18
s(i)=0;
end
%獲勝神經(jīng)元的輸出置1
s(count)=1;
%權(quán)值調(diào)整
w(count,:)=w(count,:)+0.1*[P(j,:)-w(count,:)];
w(count,:)=w(count,:)/norm(w(count,:));
v(:,count)=v(:,count)+0.1*(T(j,:)'-T_out(j,:)');
%計(jì)算網(wǎng)絡(luò)輸出
T_out(j,:)=v(:,count)';
end
%訓(xùn)練次數(shù)遞減
epoch=epoch-1;
end
%訓(xùn)練結(jié)束
T_out
%網(wǎng)絡(luò)回想
%網(wǎng)絡(luò)的輸入模式Pc
Pc=[0.5 1;1 3];
%初始化Pc
for i=1:2
if Pc(i,:)==[0 0]
Pc(i,:)=Pc(i,:);
else
Pc(i,:)=Pc(i,:)/norm(Pc(i,:));
end
end
%網(wǎng)絡(luò)輸出
Outc=[0 0 0 0 0;0 0 0 0 0];
for j=1:2
for i=1:18
sc(i)=Pc(j,:)*w(i,:)';
end
tempc=max(sc);
for i=1:18
if tempc==sc(i)
countp=i;
end
sc(i)=0;
end
sc(countp)=1;
Outc(j,:)= v(:,countp)';
end
%回想結(jié)束
Outc
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -