% trainieren des MLP

load zeitserie;  % Laden der Daten von x und y
P = 5;           % Anz. versteckte Neuronen
eta = 0.009;     % Lernrate (auch Lernfaktor oder Lernschrittweite) bei der Backpropagation
Nepoch = 100000;  % Anzahl der Epochendurchläufe
alp = 0.9;       % Parameter für den Momentum-Term zum adjustieren (typisch: 0.9)



% Initialisierung der Gewichtsmatrizen
V = -0.1+0.02*rand(P,2);
U = -0.1+0.02*rand(P+1,1)'; % Unterschied zum Praktikum, U muss um 1 erweitert werden damit es 6 Werte besitzt
                            % Und transponiert werden damit die
                            % Dimensionen stimmen.

Vinput = zeros(P,2);
Uinput = zeros(P+1,1)';


for N = 1: Nepoch
    
    [Unew,Vnew, Uschleife, Vschleife] = MlpEpoch2(x,y,U,V, Uinput, Vinput,alp,eta);       
    % Aufruf der Funktion MlpEpoch (enthält Fehlerberechnung
    % und Update der
    % Gewichtsvektoren nach Batch-Regel
    
    
    Uinput = Uschleife; 
    Vinput = Vschleife; 
                   
    U = Unew;
    V = Vnew;
   
    % recall versuchen
    % plotten der Regressionsfunktion in rot und in blau der Datenpunkte von
    % zeitserie.mat
    [xStep,z_dach] = MlpRecall(U,V,x,100);
    figure(1);
    plot(x,y,'o');
    hold on;
    plot(xStep,z_dach,'-r');
    hold off;
    xlabel 'x';
    ylabel 'Daten (blau), Regression (rot)';
    title 'MLP fit, eine versteckte Schicht, 5 hidden Neurons';
    drawnow;
    eta=eta*0.99999;
    
end


