Wie Gurke Keras Modell?

Offizielle Dokumente besagen, dass "Es wird nicht empfohlen zu verwenden, Gurke oder cPickle zu sparen Keras-Modell".

Jedoch mein Bedürfnis nach Beizen Keras Modell stammt aus der hyperparameter Optimierung mit Hilfe sklearn ist RandomizedSearchCV (oder jede andere hyperparameter-Optimierung). Es ist wichtig, speichern Sie die Ergebnisse in eine Datei, denn dann kann das Skript Remote ausgeführt werden in einer separaten Sitzung etc.

Im wesentlichen, ich möchte:

trial_search = RandomizedSearchCV( estimator=keras_model, ... )
pickle.dump( trial_search, open( "trial_search.pickle", "wb" ) )
  • Diese Frage ist auch für die anderen deep-learning-frameworks wie Tensorflow etc.
  • Keras empfiehlt Modell.save(). Scikit empfiehlt joblib. Nach der Optimierung der Parameter mit RandomizedSearchCV, können Sie einfach trial_search.best_estimator_ um Ihre besten ausgestattete Modell und verwenden Sie dann keras empfohlene Methode auf, die. Warum wollen Sie sparen eine RandomizedSearhCV Objekt überhaupt?
  • Weil Sie möchten, speichern Sie die Geschichte von der Suche, zusammen mit all den details mit, zum Beispiel würde ich gerne wissen, wie ist der 2. beste Ergebnis sah aus wie und welche Parameter er verwendet, rückwirkend.
  • Anstatt dann die komplette RandomizedSearchCV, sollten Sie sich für das speichern der cv_results_ Attribut, das wird ein dict mit allen Infos, die Sie benötigen.
  • Per definition, wenn Sie nicht speichern Sie das gesamte Objekt, werden Sie Informationen zu verlieren. Zum Beispiel, auf einen späteren Zeitpunkt, plötzlich möchte ich vergleichen die GEWICHTE der 3. beste Modell, um die GEWICHTE der 5. beste Modell. Anstatt nun pickle.load() muss ich erneut diese Modelle wieder. Muss ich nicht? Auch möchte ich nicht angebracht werden sklearn, da würde ich gerne andere hyperparam Optimierer in einem späteren Zeitpunkt.
  • Die RandomizedSearchCV wird nicht alle retten die eingebauten Modelle sowieso. Also, wenn Ihr Ziel ist, speichern Sie die angepasste Modelle für alle Kombinationen, die von Ihrem param grid über die cross-Validierung Falten, speichern RandomizedSearchCV Objekt wird nicht von nutzen sein.
  • Ich bin mir nicht 100%, aber ich bin ziemlich sicher, dass RandomizedSearchCV-Objekt verweist auf das estimator-Objekte, und damit pickle werden versuchen, diese Gurke estimator-Objekte, in diesem Fall ist der Schätzer ist keras.Modell, und daher diese Frage.
  • I dont think so. Können Sie, wenn möglich, ein Beispiel oder zeigen Sie mir den link, die überprüfen können, wenn Sie sagen: "ich bin ziemlich sicher, dass RandomizedSearchCV-Objekt verweist auf das estimator-Objekte"
  • Diskussion ist immer weit von dem Thema, aber so etwas hatte ich im Hinterkopf: gist.github.com/sidazhou/c26b9cf98cbbaf13ecfda8baba56c28c
  • Ja, ich bin über das Thema. Aber was Sie im Sinn haben und was Sie gezeigt haben auf über gist ist nicht möglich, RandomizedSearchCV. Ich kann beschreiben, wie es wird nicht speichern Sie die keras Modelle für jedes Fach, aber das ist weit Weg von Thema. Jetzt, da Sie wollen, "wo kann das Skript Remote ausgeführt werden in einer separaten Sitzung", ich bin sicher, Sie werden nur ausgeführt, eine endgültige version von Modell (nach tuning abgeschlossen ist). Für die, die sich auf meinen ersten Kommentar.

InformationsquelleAutor Sida Zhou | 2018-01-17
Schreibe einen Kommentar