对于单层神经网络的实现,我有两个数据文件。单层神经网络
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