1

Ich habe ein Feed Forward Neural Network mit Keras in Python mit einem Dataset trainiert und getestet. Aber jedes Mal, um einen neuen Testsatz mit externen Daten zu erkennen (extern, da die Daten nicht im Datensatz enthalten sind), muss ich das Feed Forward Neural Network neu trainieren, um den Testsatz zu berechnen. Zum Beispiel jedes Mal, wenn ich zu tun habe:Testen Sie neuronales Netzwerk mit Keras Python

model.fit (data, output_data) 
prediction=model.predict_classes(new_test) 
print "Prediction : " prediction 

korrekte Ausgabe Gewinnung:

Prediction: [1 2 3 4 5 1 2 3 1 2 3] 
    Acc: 100% 

Nun würde testet ich ein neues Test-Set, nämlich „new_test2.csv“ ohne Umschulungs wieder, nur mit was das Netzwerk gelernt hat. Ich denke auch über eine Art Echtzeit-Erkennung nach.

Wie soll ich das machen?

Vielen Dank im Voraus

Antwort

2

In Ihrer Trainingsdatei, können Sie das Modell

model.save('my_model.h5') 
mit sparen

Später, wann immer Sie möchten, können Sie es mit

laden 210

Dann können Sie model.predict anrufen und was nicht.

3

Mit einem gut ausgebildeten Modell können Sie Prognosen über neue Daten machen. Sie müssen nichts umschulen, weil Ihr Modell (hoffentlich) das Lernen auf ungesehene Daten verallgemeinern und eine vergleichbare Genauigkeit erreichen kann.

füttern Sie einfach die Daten von „new_test2.csv“ auf Ihre vorhersagen Funktion:

prediction=model.predict_classes(content_of_new_test2) 

Offensichtlich Sie Daten des gleichen Typs und Klassen müssen. Darüber hinaus müssen Sie alle Transformationen auf die neuen Daten anwenden, genauso wie Sie die Daten transformiert haben, auf denen Sie Ihr Modell trainiert haben.

Wenn Sie Echtzeit-Vorhersagen möchten Sie Setup eine API mit Flask konnte:

http://flask.pocoo.org/

In Bezug auf Terminologie und korrekte Methode der Ausbildung:

Sie Zug auf einem Trainingssatz (zB 70% aller Daten, die Sie haben).

Sie validieren Ihre Ausbildung mit einer Validierung gesetzt (zum Beispiel 15% der Daten). Sie verwenden die Genauigkeits- und Verlustwerte Ihres Trainings, um Ihre Hyperparameter zu optimieren.

Sie dann Ihre Modelle Endleistung auswerten, indem Daten von Ihrem Testset (wieder 15% Ihrer Daten) vorherzusagen. Das müssen Daten sein, Ihr Netzwerk hat es noch gar nicht gesehen und wurde von Ihnen nicht zur Optimierung von Trainingsparametern genutzt.

Danach können Sie auf Produktionsdaten vorhersagen.

Wenn Sie Ihre geschultes Modell Verwendung speichern wollen, dass diese (aus Keras Dokumentation entnommen):

from keras.models import load_model 

model.save('my_model.h5') # creates a HDF5 file 'my_model.h5' 
del model # deletes the existing model 

# returns a compiled model 
# identical to the previous one 
model = load_model('my_model.h5') 

https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model

+0

Vielen Dank für Ihre Antwort. Sie können sich ein Skript vorstellen, das den gesamten Zug- und Testcode zum Testen neuer Einträge enthält. Mit nur einem Skript habe ich jedes Mal das Netzwerk neu trainiert, um die Ausgabe für einen neuen Testsatz vorherzusagen. Meine vorherige Anfrage betrifft eine Art, wie ich tun sollte, um das trainierte neuronale Netzwerk zu speichern/abzurufen, um neue Daten zu testen. Im Grunde brauche ich etwas, das mein Netzwerk speichert und versucht, etwas von seinem Wissen zu erkennen. Ich hoffe, es war klar. @petezurich –

+0

Von Ihrer Frage und Kommentar ist es mir nicht völlig klar, wenn Ihre Methode der Aufteilung Ihrer Daten in Zug, Validierung und Test von Daten korrekt ist. Siehe meine Beschreibung in meiner Antwort. Es ist sehr wichtig, so vorzugehen, sonst bekommen Sie falsche Ergebnisse. – petezurich

+1

Um aus dem Weg zu gehen, um das zugrunde liegende Problem zu korrigieren ... (+1) –