我必須實現單層神經網絡或感知器。爲此,我有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