WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

KNN Tool, Fehler bei Train Funktion

 

Pardus_TR
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 15.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2013, 14:02     Titel: KNN Tool, Fehler bei Train Funktion
  Antworten mit Zitat      
Hallo,

Ich habe nicht so viel Erfahrung mit Matlab. Ich benutze das Tool für künstliche neurale Netze. Aber wenn ich das Program laufen lasse, bekomme ich Fehler. Mein Betreuer hat mir gesagt, dass das Problem an dem Version von Matlab liegen könnte.

Program:
Code:

clear all;

% lade Daten
load 'C:\Users\s5591648\Documents\MATLAB\SRU_data_roh.txt';

% Mofdelltyp fur KNN festlegen
knn_typ = 'orig'; % d.h. FTDNN 5: (0,5,7,9)-20-8-1 x2
% knn_typ = 'test'; % d.h. FTDNN 5:9-10-2

    switch knn_typ
       
        case 'test';
           
            % Datenzuordnung
            input_roh = SRU_data_roh(:,1:5)';
            output_roh = SRU_data_roh(:,6)';
            % Initialisierung
            input = zeros(size(input_roh));


            % Mittelwertfilter
            windowSize = 9;
            for i=1:1:5
                input(i,:) = filter(ones(1,windowSize)/windowSize,1,input_roh(i,:));
            end
            output = filter(ones(1,windowSize)/windowSize,1,output_roh);
           
        case 'orig';
           
            % Datenzuordnung            
            input_roh = SRU_data_roh(:,1:5)';
            output_roh = SRU_data_roh(:,6)';
            % Initialisierung
            input = zeros(size(input_roh));

            % Mittelwertfilter
            windowSize = 8;            
            for i=1:1:5
                input(i,:) = filter(ones(1,windowSize)/windowSize,1,input_roh(i,:));
            end
            output = filter(ones(1,windowSize)/windowSize,1,output_roh);
                       
        otherwise
            disp('Fehler! KNN-Modell undefiniert.');
    end

% Start-Datensatz
start_punkt = 80;

% Speicherfreigabe
clear 'SRU_data_roh';

% Daten als "time sequence"
input = con2seq(input);
output = con2seq(output);

% Messung der Simulationsdauer startet
tic;

% Indices für Aufteilung der Daten (Training, Validierung und Test)
initTrainInd = start_punkt :1:start_punkt+8 ;
trainInd = start_punkt+9 :1:start_punkt+9+1000 ;
initValInd = start_punkt+1992 :1:start_punkt+2000 ;
valInd = start_punkt+2000 :1:start_punkt+3000 ;
testInd = 4900:6450;

% Trainingsdaten (Ein- und Ausgang, inkl. TDL-Initialisierungsdaten)
trainP = input(trainInd);
trainPi = input(initTrainInd);
trainT = output(trainInd);
% Validierungsdaten (Ein- und Ausgang)
valP = input(valInd);
valPi = input(initValInd);
valT = output(valInd);
% Testdaten (Ein- und Ausgang)
testP = input(testInd);
testT = output(testInd);
% Initialisierungsvektor
z_Pi = zeros(1,9);

% Zusammenstellung der Daten zum Training
training.P = trainP;
training.T = trainT;
training.Pi = trainPi;
% Zusammenstellung der Daten zur Validierung
val.P =valP;
val.T =valT;
val.Pi = valPi;
% Zusammenstellung der Daten zum Testen
test.P =testP;
test.T =testT;
test.Pi = con2seq([z_Pi;z_Pi;z_Pi;z_Pi;z_Pi]);

% Erstellung eines KNN
    switch knn_typ
       
        case 'test';
        net = newfftd(cell2mat(minmax(training.P)),(0:9),[10 1], {'tansig', 'purelin'});    
        case 'orig';
        net = newfftd(cell2mat(minmax(training.P)),[0 5 7 9],[20 8 1], {'tansig','tansig','purelin'},'traincgb');
        otherwise
        disp('Fehler! KNN-Modell undefiniert.');
    end
   
% Initialisierung des Zufallszahlgenerators    
rand('seed', 20121978);

% Einstellung der Traningsparameter
net.trainParam.show = 25;
net.trainParam.showWindow = false;
% net.trainParam.lr = 0.05;
net.trainParam.max_fail = 10;
net.trainParam.epochs = 500;
net.trainParam.showCommandLine = true;
net.trainParam.goal = 0.00001;


% 1) Training mit Validierungs- und Testdaten
% net = train(net, training.P, training.T, training.Pi,[],val,test);

% 2) Training bis "net.trainParam.epochs" erreicht wird
net = train(net, training.P, training.T, training.Pi,[],[],[]);

% Ende der Zeitmessung
toc;

% Auswertung
% Simulation auf Trainingsdaten
y_train=sim(net, training.P, training.Pi);
y_train_soll=training.T;
y1_soll=cell2mat(y_train_soll);
y1=cell2mat(y_train);
figure1 = figure('PaperSize',[20.98 29.68], 'Position',[50 150 900 400]);
plot(1:1001,y1, 'r', 'LineWidth', 2);
hold on;
plot(1:1001,y1_soll, 'b', 'LineWidth', 2);
legend1=legend('KNN-Ausgang','Referenzsignal',1);
set (legend1, 'FontSize',13);
xlabel('Zeit, min','FontSize', 13);
ylabel('y1, normiert','FontSize', 13);
grid on;
xlim([0 1000]);
ylim([0 1]);
mse_train = mse(y1_soll-y1) %Ausgabe in die Konsole

% Simulation auf Testdaten
y_test=sim(net, test.P, test.Pi);
y_test_soll=test.T;
y2_soll=cell2mat(y_test_soll);
y2=cell2mat(y_test);
y2_soll=y2_soll(20:1520);
y2=y2(20:1520);
figure2 = figure('PaperSize',[20.98 29.68],'Position',[50 50 900 400]);
plot(1:1501,y2, 'r', 'LineWidth', 2);
hold on;
plot(1:1501,y2_soll, 'b', 'LineWidth', 2);
legend1=legend('KNN-Ausgang','Referenzsignal',1);
set (legend1, 'FontSize',13);
xlabel('Zeit, min','FontSize', 13);
ylabel('y1, normiert','FontSize', 13);
grid on;
xlim([0 1500]);
ylim([0 0.5]);
mse_test = mse(y2_soll-y2) %Ausgabe in die Konsole
 

Und die Fehlermeldung sieht so aus:
Code:
Warning: NEWFFTD used in an obsolete way.
> In obs_use at 18
  In newfftd>create_network at 136
  In newfftd at 111
  In Kap5_SRU_Training at 108
          See help for NEWFFTD to update calls to the new argument list.
 
??? Error using ==> traincgb at 117
Inputs and layer states have different numbers of samples.

Error in ==> network.train at 107
[net,tr] = feval(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);

Error in ==> Kap5_SRU_Training at 130
net = train(net, training.P, training.T, training.Pi,[],[],[]);


Danke schön.
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.