對於單層神經網絡的實現,我有兩個數據文件。單層神經網絡
In:
0.832 64.643
0.818 78.843
Out:
0 0 1
0 0 1
以上是2個數據文件的格式。
目標輸出對於相應輸入所屬的特定類爲「1」,對於其餘2個輸出爲「0」。
的問題是如下:
你的單層神經網絡將 發現A(3×2矩陣)和b(3由1個 矢量)在Y = A * X + B式中,Y是[C1, C2,C3]'並且X是[x1,x2]'。
爲了解決上述與 神經網絡的問題,我們可以重新寫出 方程如下:Y = A '* X',其中 A」 = [A B](3×3矩陣)和X '是 [X1,X2,1]'
現在可以使用與 三個輸入節點(一個用於X1,X2,和 1分別地)和三個輸出(C1, C2,C3)神經網絡。由此產生的9個(因爲我們有3個輸入和3個 之間的輸出連接)權重將相當於A'矩陣的 元素。
Basicaly,我試圖做這樣的事情,但它不工作:
function neuralNetwork
load X_Q2.data
load T_Q2.data
x = X_Q2(:,1);
y = X_Q2(:,2);
learningrate = 0.2;
max_iteration = 50;
% initialize parameters
count = length(x);
weights = rand(1,3); % creates a 1-by-3 array with random weights
globalerror = 0;
iter = 0;
while globalerror ~= 0 && iter <= max_iteration
iter = iter + 1;
globalerror = 0;
for p = 1:count
output = calculateOutput(weights,x(p),y(p));
localerror = T_Q2(p) - output
weights(1)= weights(1) + learningrate *localerror*x(p);
weights(2)= weights(1) + learningrate *localerror*y(p);
weights(3)= weights(1) + learningrate *localerror;
globalerror = globalerror + (localerror*localerror);
end
end
我寫在其他一些文件這一功能,把它在我前面的代碼。
function result = calculateOutput (weights, x, y)
s = x * weights(1) + y * weights(2) + weights(3);
if s >= 0
result = 1;
else
result = -1;
end