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 werdensklearn
, 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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als jetzt, Keras Modelle sind pickle-in der Lage. Trotzdem empfehlen wir die Verwendung
model.save()
zu speichern Modell auf der Festplatte.model.save()
bevorzugt zu Beizen, können Sie bitte klären Sie dies in Ihrer Antwort?Diese funktioniert wie ein Charme http://zachmoshe.com/2017/04/03/pickling-keras-models.html:
PS. Ich hatte einige Probleme, aufgrund meiner
model.to_json()
angehobenTypeError('Not JSON Serializable:', obj)
wegen Zirkelbezug, und dieser Fehler verschluckt wurde, durch den obigen code irgendwie, es ergeben sich somit Gurke Funktion läuft ewig.VERWENDEN get_weights UND set_weights zu SPEICHERN UND ZU LADEN-MODELL, BEZIEHUNGSWEISE.
Haben Sie einen Blick auf diesen link: Nicht zu sparen DataFrame im HDF5 ("object header-Nachricht ist zu groß")
Können Sie eine Gurke Keras neuronale Netzwerk über die bereitstellen-ml-Modul, die installiert werden können via pip -
Volle Ausbildung und Bereitstellung von kera neuronale Netzwerk mit Hilfe des deploy-ml-wrapper sieht wie folgt aus:
Den Eingelegten Datei enthält das Modell, die Metriken, die sich aus der Prüfung, eine Liste von Variablen-Namen und deren Reihenfolge, in der Sie müssen eingegeben werden, die version von Keras und python verwendet, und wenn ein scaler verwendet wird, wird es auch in der Datei gespeichert. Dokumentation ist hier. Das laden und die Benutzung der Datei wird durchgeführt, indem die folgenden:
Ich Schätze, dass das training ein bisschen zu restriktiv. Bereitstellen-ml unterstützt den Import von eigenen Modellen für Sk-lernen, aber es funktioniert immer noch auf diese Unterstützung für Keras. Allerdings habe ich festgestellt, dass Sie können erstellen, bereitstellen-ml NeuralNetworkBase-Objekt, definieren Sie Ihre eigenen Keras neuronalen Netzwerk außerhalb Bereitstellen-ml, und weisen Sie auf die bereitstellen-ml-Modell-Attribut und das funktioniert gut: