【发布时间】:2011-03-27 14:32:56
【问题描述】:
我必须实现一个单层神经网络或感知器。为此,我有 2 个文件数据集,一个用于输入,一个用于输出。我必须在 matlab 中执行此操作,而不使用神经工具箱。格式为下面给出了2个文件。
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 表示对应输入所属的特定类,”0 表示其余 2 个输出。
我试过这样做,但它不适合我。
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);
这个算法的错误在哪里??
我指的是下面链接中给出的示例:-
【问题讨论】:
-
这还不是算法错误。这是语法错误
Count ≢ count -
从您的代码中可以清楚地看出,您还没有准备好一次尝试一个完整的解决方案。我建议您从伪代码算法开始,逐步独立地实现每个步骤。如果您不知道如何编写循环或递增变量,那么尝试编写完整的程序并不是一种富有成效的学习体验。
标签: matlab neural-network