⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 whk_h.m

📁 魏海坤编著的《神经网络结构设计的理论与方法》 国防工业出版社出版
💻 M
字号:

function main()
SamNum=500;          %训练样本数
HiddenUnitNum=8;    %隐节点数
EnsembleNum=5;

TrainSamIn=rand(2,SamNum)*2-1;%产生随机的训练样本输入
TrainSamOut=sign(TrainSamIn(1,:).*TrainSamIn(2,:));%得到训练样本输出

TestSamIn=[];
for x1=-1:0.05:1
    for x2=-1:0.05:1
        x=[x1;x2];
        TestSamIn=[TestSamIn x];
    end
end
TestSamOut=sign(TestSamIn(1,:).*TestSamIn(2,:));%得到测试样本输出

MaxEpochs=1000;          %最大训练次数
lr=0.005;                %学习率
EO=0.01;                  %目标误差

tp=[MaxEpochs,lr,EO];
AllTestNNOut=[];
for NetIndex=1:EnsembleNum
    W1=0.1*rands(HiddenUnitNum,2);    %输入层到隐层的初始权值
    B1=0.1*rands(HiddenUnitNum,1);    %隐节点初始偏移
    W2=0.1*rands(1,HiddenUnitNum);    %隐层到输出层的初始权值
    B2=0.1*rands(1,1);                %输出层初始偏移
    [NewW1,NewB1,NewW2,NewB2,ErrHistory]=BackProp(W1,B1,W2,B2,...
                                             TrainSamIn,TrainSamOut,tp);
   TestNNOut=BPNetwork(NewW1,NewB1,NewW2,NewB2,TestSamIn);
   AllTestNNOut=[AllTestNNOut;TestNNOut];
   GXORDraw(TestSamIn,TestNNOut);
end
[xxx,TestSamNum]=size(TestSamOut);
AllTestSamOut=repmat(TestSamOut,EnsembleNum,1);
SubnetErrMat=abs(sign(AllTestNNOut)-AllTestSamOut)/2;
SubnetErrorRate=sum(SubnetErrMat')/TestSamNum
EnsembleOut=sign(sum(AllTestNNOut));
EnsembleErrorRate=sumsqr((TestSamOut-EnsembleOut)/2)/TestSamNum
GXORDraw(TestSamIn,EnsembleOut);

function[NewW1,NewB1,NewW2,NewB2,ErrHistory]=BackProp(W1,B1,W2,B2,...
                                                      SamIn,SamOut,tp)
%(参考附录A)

function GXORDraw(X,Y)
[xxx,TestSamNum]=size(Y);
figure
echo off
axis([-1,1,-1,1])
axis on
grid
xlabel('Input x1');
ylabel('Input x2');
hold on
for i=1:TestSamNum
    x1=X(1,i);
    x2=X(2,i);
    if(Y(i)>0)
        plot(x1,x2,'k*')
    end
end

function SamOut=BPNetwork(W1,B1,W2,B2,SamIn)
[xxx,SamNum]=size(SamIn);
RepB1=repmat(B1,1,SamNum);
RepB2=repmat(B2,1,SamNum);
HiddenOut=tansig(W1*SamIn+RepB1);
SamOut=tansig(W2*HiddenOut+RepB2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -