2016-02-17 11 views
9

Ich versuche ein Ensemble von vielen trainierten Modellen zu erstellen. Alle Modelle haben die gleiche Grafik und unterscheiden sich nur durch ihre Gewichte. Ich erstelle das Modelldiagramm mit tf.get_variable. Ich habe mehrere verschiedene Checkpoints (mit unterschiedlichen Gewichtungen) für die gleiche Graphenarchitektur und möchte für jeden Checkpoint ein Instanzmodell erstellen.Wie erstelle ich Ensemble im Tensorflow?

Wie kann ich viele Checkpoints laden, ohne die zuvor geladenen Gewichte zu überschreiben?

Da ich meine Grafiken mit tf.get_variable erstellt habe, ist die einzige Möglichkeit, mehrere Diagramme zu erstellen, indem Sie das Argument reuse = True übergeben. Wenn ich jetzt versuche, die Namen meiner Graphvariablen zu ändern, die die Erstellungsmethode in einen neuen Bereich einschließen (damit sie mit anderen erstellten Graphen nicht gemeinsam genutzt werden können), wird das nicht funktionieren, da sich die neuen Namen von den gespeicherten unterscheiden Gewichte und ich kann es nicht laden.

+0

Ich habe es noch nicht ausprobiert, aber hier einige Referenzcode: https://github.com/eske/seq2seq/blob/master/translate/__main__.py#L190 Kurz gesagt, der Autor schafft als viele Sessions so viele Checkpoints und innerhalb jeder Session stellt er den entsprechenden Checkpoint wieder her. – tnq177

+0

Einige weitere relevante Referenz-Code: https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/05_Ensemble_Learning.ipynb – Deepank

+0

@cesarsalgado: Ich habe das gleiche Problem. Ich verwende Inception-v4 in tf-slim. Wie hast du es gelöst? – Jame

Antwort

-1

Ich beantwortete dies auch auf Reddit, aber nur für den Fall, dass andere Leute dieses Problem auftreten, ich Reposting es hier und fügte weitere Klarstellungen.

Wenn Sie Scikit Flow verwenden, können Sie die Modelle einfach speichern und wiederherstellen, verschiedene Vorhersagen aus verschiedenen Modellen erstellen und aus diesen Vorhersagen ein Ensemble erstellen. Sehen Sie sich an, wie Sie diese auf unserer Beispielseite speichern und wiederherstellen können.

Es gibt auch predict_proba(), die Sie verwenden können, intead predict(), um die vorhergesagten Wahrscheinlichkeiten zu erhalten. Es sollte einfach sein, einfache Mittelungen, Stapelungen usw. verschiedener Arten von Ensembles zu erstellen.

Hoffe, das hilft.

Verwandte Themen