Wie kann ich ein vortrainiertes Modell in Tensorflow auf einem neuen Datensatz optimieren? In Caffe kann ich einfach die letzte Ebene umbenennen und einige Parameter für die zufällige Initialisierung festlegen. Ist etwas ähnliches im Tensorflow möglich?
Angenommen, ich besitze eine Prüfpunktdatei ( deeplab_resnet.ckpt
) und Code, der das Berechnungsdiagramm einrichtet, in dem ich die letzte Ebene so ändern kann, dass sie die gleiche Anzahl von Ausgaben hat wie die neue Datenmenge.
Dann versuche ich die Sitzung so zu starten:
%Vor% Dies gibt mir jedoch einen Fehler, wenn ich die Funktion saver.restore
aufruft, da sie exakt die gleiche Graphenstruktur erwartet wie die, von der sie gespeichert wurde.
Wie kann ich nur alle Gewichtungen mit Ausnahme der letzten Ebene aus der 'ckpt_path/deeplab_resnet.ckpt'
-Datei laden?
Ich habe auch versucht, den Classification
Layernamen zu ändern, aber auch kein Glück dort ...
Ich verwende das tensorflow-deeplab-resnet-Modell
Sie können die Namen der Variablen angeben, die Sie wiederherstellen möchten.
Sie können also eine Liste aller Variablen im Modell erhalten und die Variablen der letzten Ebene herausfiltern:
%Vor%Einzelheiten finden Sie in der Dokumentation .
Alternativ können Sie versuchen, das gesamte Modell zu laden und eine neue "Verzweigung" aus der Ebene vor der letzten zu erstellen und während des Trainings in der Kostenfunktion zu verwenden.
Tags und Links tensorflow