2011-01-17 6 views
0

Hallo ich habe diesen Code irgendwo mit wenig Infos gefunden. Es wird angenommen, dass es sich um einen Backpropagation neuronalen Netzwerkcode handelt. aber es scheint etwas von Gewicht und Voreingenommenheit zu fehlen. ist der Code korrekt? ist es Test-While-Train Backpropagation neuronales Netzwerk? dankeFrage zu neural network matlab code

% --- Executes on button press in pushbutton6. 

    %~~~~~~~~~~~[L1 L2 1];first hidden layer,second & output layer~~~~~ 
    layer = [11 15 1]; 
    myepochs = 30; 
    attemption = 1; %i; 
    mytfn = {'tansig' 'tansig' 'purelin'}; 

    %~~~~~~load data~~~~~~~~~~~~~~~~~~~~~~~ 
    m = xlsread('D:\MATLAB\datatrain.csv'); 

    %~~~~~~convert the data in Matrix form~~~~ 
    [row,col] = size(m);   

    P = m(1:row,1:10)'; 


    T1 = m(1:row, col)'; % target data for training...last column 


    net = newff([minmax(P)],layer,mytfn,'trainlm'); %nnet 
    net.trainParam.epochs = myepochs; % how many time newff will repeat the training 
    net.trainParam.showWindow = true; 
    net.trainParam.showCommandLine = true; 
    net = train(net,P,T1); % start training newff with input P and target T1 

    Y = sim(net,P); % training 

    save 'net7' net; 


    % --- Executes on button press in pushbutton4. 

    %~~~~~~load data~~~~~~~~~~~~~~~~~~~~~~~ 
    mt = xlsread('D:\MATLAB\datatest.csv'); 

    %~~~~~~convert the data in Matrix form~~~~ 
    [row1,col1] = size(mt);  
    Pt= mt(1:row1,1:10)'; 
    Tt = mt(1:row1, col1)'; 

    load 'net7' -mat; 
    Yt= sim(net,Pt); 

    %~~~~~~~final result of the neural network~~~~~~~~ 
    [r,c]=size(Yt); 
    result=Yt(c); 


    if result>0.7 
     error=1-result; 
     set(handles.edit39,'String','yes') 
     set(handles.edit40,'String',num2str(error)) 
     set(handles.edit41,'String','Completed') 
     data1=[num2str(result) ]; 
     fid = fopen('D:\MATLAB\record.csv','a+'); 
     fprintf(fid,[data1,'\n']); 
     fclose(fid); 


    else 
     set(handles.edit39,'String','no') 
     set(handles.edit40,'String',num2str(result)) 
     set(handles.edit41,'String','Completed') 
     data1=[num2str(result) ];   
     fid = fopen('D:\MATLAB\record.csv','a+'); 
     fprintf(fid,[data1,'\n']); 
     fclose(fid); 
    end  

Antwort

0

Der Code ist korrekt. Neuronale Netzwerkgewichte und -abweichungen werden in der Struktur net gespeichert. Sie können auf sie über die Strukturen net.IW und zugreifen. Biases werden innerhalb net.b gespeichert. Dieser Code trainiert ein Netzwerk mit den Eingängen P und den Zielen T1, die sie in Trainings-, Test- und Validierungsuntergruppen aufteilen, die während des Trainings verwendet werden. Weitere Informationen zum Trainingsablauf finden Sie in der Dokumentation.

+0

Ich verstehe über Training dann Testen. Ich mache Bilderkennungssystem mit GUI. sagen wir, ich habe bereits 300 Bildparameter für Trainingsspeicher in traindata.csv. dann möchte ich 100 Bild testen. Was ich getan habe ist, ich lade 1 Bild dann führe diesen Code und wiederhole es, bis 100 Bild getestet wird. kann ich das machen? ist es richtig? Ich habe einen Zweifel daran, weil es wie neuronales Test-während-Training aussieht. ist es möglich? – user562873

+0

Ich bin mir nicht sicher, richtig verstanden zu haben. Nun, wenn Sie etwas wie traindata.csv haben, können Sie ähnlich eine Datei wie testdata.csv haben, oder? Dann können Sie die Funktion sim verwenden, um Ihr geschultes Netzwerk auf neue Testdaten zu testen ... –

+0

ich verwende gui, um dieses Erkennungssystem zu implementieren. Nachdem alle Zugdaten in der Datenzugangsdatei gespeichert sind, verwende ich diesen Code, um ein Bild zu testen. Wenn ich ein Bild teste, lautet die Antwort ja. aber wenn ich das gleiche Bild noch einmal teste, ist die Antwort nein. Warum ändert es sich, wenn das gleiche Bild erneut getestet wird? – user562873

Verwandte Themen