我必须实现单层神经网络或感知器。为此,我有2个文件数据集,一个用于输入,另一个用于输出。我必须在matlab中执行此操作而不使用神经工具箱。下面给出2个文件的格式。单层神经网络中的matlab语法错误
In:
0.832 64.643
0.818 78.843
1.776 45.049
0.597 88.302
1.412 63.458
Out:
0 0 1
0 0 1
0 1 0
0 0 1
0 0 1
目标输出对于相应输入所属的特定类为“1”,对于其余2个输出为“0”。
我试图做到这一点,但它不适合我。
load in.data
load out.data
x = in(:1);
y = in(:2);
learning rate = 0.2;
max_iteration = 50;
function result = calculateOutput(weights,x, y)
s = x*(weights(1) +weight(2) +weight(3));
if s>=0
result = 1
else:
result = -1
end
end
Count = length(x);
weights[0] = rand();
weights[1] = rand();
weights[2] = rand();
iter = 0;
do {
iter++;
globalerror = 0;
for(p=0; p<count;p++){
output = calculateoutput(weights,x[p],y[p]);
localerror = output[p] - output
weights[0]+= learningrate *localerror*x[p];
weights[1]+= learningrate *localerror*y[p];
weights[2]+= learningrate *localerror;
globalerror +=(localerror*localerror);
}
}while(globalerror != 0 && iter <= max_iteration);
这个算法的错误在哪里?
我指的是在下面的链接中给出的示例: -
Perceptron learning algorithm not converging to 0
这不是算法错误(还)。这是一个语法错误'Count≢count' – msw 2010-08-10 02:09:27
从您的代码中可以清楚地看到,您还没有准备好一次尝试完整的解决方案。我建议你从伪代码算法开始,逐步实现每一步。如果你不知道如何编写一个循环或增加一个变量,试图编写一个完整的程序不是一个有效的学习体验。 – 2010-08-10 02:36:57