-
大小: 2KB文件類型: .m金幣: 1下載: 0 次發(fā)布日期: 2021-06-18
- 語言: Matlab
- 標(biāo)簽: 機(jī)器學(xué)習(xí)??Matlab代碼??
資源簡介
適合在校大學(xué)生初步實(shí)驗(yàn)使用,將此程序直接粘貼到Matlab的m文件中,便可直接運(yùn)行,得到結(jié)果,本人已在博客中發(fā)表“與”運(yùn)算實(shí)驗(yàn),神經(jīng)網(wǎng)絡(luò)網(wǎng)址如下https://blog.csdn.net/weixin_41529093/article/details/86713335建議學(xué)有余力的同學(xué)不要下載,通過看我的博文,自己編出“或”運(yùn)算代碼,
代碼片段和文件信息
function?Perception1_3_HuoYunSuan()
close?all?%關(guān)閉所有figure
rand(‘state‘sum(100*clock))?%隨機(jī)數(shù)種子用時(shí)鐘進(jìn)行初始化
P=4;%訓(xùn)練樣本數(shù)
%輸入訓(xùn)練樣本:
X(:1)=[0;0];
X(:2)=[0;1];
X(:3)=[1;0];
X(:4)=[1;1];
X=[-1*ones(14);?X];%考慮閾值,設(shè)x0=-1
%輸入對(duì)應(yīng)期望輸出:
d=[0?1?1?1];
%設(shè)置感知器參數(shù)
InDim=2;?%輸入樣本維數(shù)
OutDim=1;?%輸出維數(shù)
MaxTrainNumber=10;%最大訓(xùn)練次數(shù)
Eta=10;%學(xué)習(xí)率
%感知器訓(xùn)練
%權(quán)值初始化
W=rand(InDimOutDim);
%設(shè)置閾值
T=0.1;
WExpand=[T;?W];%合并閾值到權(quán)值
w1=[];?%創(chuàng)建w1矩陣
w2=[];?%創(chuàng)建w2矩陣
ErrHistory=[];
for?i=1:MaxTrainNumber?%循環(huán)MaxTrainNumber次
????for?p=1:P
????????net(p)=WExpand‘*X(:p);%計(jì)算樣本p的net值
????????o(p)=SinPoleTwoValue_f(net(p));%調(diào)用編輯好的變換函數(shù),得到輸出值
????????Err(p)=o(p)-d(p);%計(jì)算誤差
????????WExpand=WExpand+Eta*(d(p)-o(p))*X(:p);%根據(jù)誤差更新權(quán)值
????end
????%計(jì)算總誤差
????Err_sum=sum(abs(Err));
?????%寫出權(quán)值w1w2的一維矩陣復(fù)合
w1=[w1?WExpand(2)];
w2=[w2?WExpand(3)];
????%記錄每次權(quán)值調(diào)整后的訓(xùn)練誤差
????ErrHistory=[ErrHistory?Err_sum];?
????if?Err_sum==0?break?end?%判斷訓(xùn)練是否停止
end
W=WExpand(2:3);
T=WExpand(1);
disp([‘The?final?Error?is:?‘num2str(Err_sum)?‘.‘]);
disp([‘The?curren?Epoch?is:?‘num2str(i)?‘.‘]);
評(píng)論
共有 條評(píng)論