Rede neural de camada única [fechada]

Para a implementação da rede neural de camada única, tenho dois arquivos de dados.

In:
    0.832 64.643
    0.818 78.843

Out:
    0 0 1
    0 0 1

O acima é o formato de 2 arquivos de dados.

A saída de destino é "1 para uma classe específica à qual a entrada correspondente pertence e" 0 para as 2 saídas restantes.

O problema é o seguinte:

Sua rede neural de camada única encontrará A (matriz 3 por 2) eb (vetor 3 por 1) em Y = A * X + b onde Y é [C1, C2, C3] 'e X é [x1, x2]' .

Para resolver o problema acima com uma rede neural, podemos reescrever a equação da seguinte forma: Y = A '* X' onde A '= [A b] (matriz 3 por 3) e X' é [x1, x2, 1]

Agora você pode usar uma rede neural com três nós de entrada (um para x1, x2 e 1, respectivamente) e três saídas (C1, C2, C3).

Os 9 pesos resultantes (já que temos 9 conexões entre 3 entradas e 3 saídas) serão equivalentes aos elementos da matriz A '.

Basicamente, estou tentando fazer algo assim, mas não está funcionando:

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 

Eu escrevo essa função em algum outro arquivo e a chamo no meu código anterior.

function result = calculateOutput (weights, x, y)
    s = x * weights(1) + y * weights(2) + weights(3);
    if s >= 0
        result = 1;
    else
        result = -1;
    end

questionAnswers(1)

yourAnswerToTheQuestion