在Matlab上训练单个神经元感知器

时间:2014-09-27 01:30:16

标签: matlab perceptron

我需要训练一个神经元感知器,它将两个不同的类别分类。 我在matlab上写了这段代码。

function error = train_perc( PercepClassTraining,eta,weights )

%initialization:

xZero=1;
wZero=0.1;

t=1; % round number
x=[];
y=[];
error=[];
epoch_error=[];
c=1;

    n=1;
    x1=PercepClassTraining(n,1);
    x2=PercepClassTraining(n,2);
    y(n)=(xZero*wZero)+(x1*weights(1))+(x2*weights(2));
    error(n)=PercepClassTraining(n,3)-y(n);


while(error(n)~=0)
        weights(1)=weights(1)+(eta*error(n)*x1);
        weights(2)=weights(2)+(eta*error(n)*x2);


        if(n==2000)
         epoch_error(c)=mean(error);
         error=[];
         c=c+1
         n=1;
        else
            n=n+1;

        end

        y(n)=(xZero*wZero)+(x1*weights(1))+(x2*weights(2));
        error(n)=PercepClassTraining(n,3)-y(n);

end

其中eta是学习率,PercepClassTraining是训练集(2000输入)。

当我使用0.1作为学习率并且[0.01 0.01]作为初始权重时它收敛于#58时代,并且它没有使用所有训练集。

当我将eta设置为0.01并且权重为0.1时,它会永远循环!代码有什么问题吗?停止标准怎么样?

0 个答案:

没有答案