Extrahieren von GEWICHTE aus .caffemodel ohne caffe installiert in Python
Gibt es einen relativ einfachen Weg zu extrahieren GEWICHTE in Python aus einer der vielen pretrained Modelle im Caffe Zoo OHNE CAFFE (noch pyCaffe)? d.h. Parsen .caffemodel
im HDF5/numpy oder was auch immer-format, kann gelesen werden, indem Sie Python?
Alle Antworten, die ich gefunden verwenden Sie C++ - code mit caffe Klassen oder Pycaffe.
Ich habe mir bei pycaffe code sieht es aus wie Sie wirklich brauchen, caffe, um den Sinn der binären ist, dass die einzige Lösung?
- Sie waren in der Lage zu verwenden, caffe-tensorflow Konverter (github.com/ethereon/caffe-tensorflow). extrahieren GEWICHTE aus ein caffe-Modell? Ich habe vor kurzem lief in das gleiche problem: ich möchte Gewicht von einem pre-Modell ausgebildet, um die Feinabstimmung meine eigenen Modell über python (ich bin mit keras+tensorflow). Aber die vor-geschult Modell, das ich verwenden möchte, hat nur caffemodel...
- Ja, das kaffe-Sache funktioniert Super, wenn es nicht für Sie arbeiten aus irgendeinem Grund können Sie immer noch gehen zu mrry repo auf github und sich bei seiner vgg16 caffe zu tensorflow code ist es ziemlich einfach, um die Konvertierung zu tun, wenn Sie gebaut haben pycaffe.
- Danke!!! Vgg16 ist das, was ich Suche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich zu der Lösung, dass die genaue Problem gerade jetzt. Vorausgesetzt Sie haben eine .caffemodel (binäre proto-format), es stellt sich heraus, ziemlich einfach zu sein.
Laden Sie die neueste caffe.proto
Kompilieren in python-Bibliothek:
protoc --python_out=. caffe.proto
Importieren und analysieren
Den Beispielcode unten
produziert für mich:
Natürlich können Sie extrahieren wollen, nichts von Ihrem Objekt. Ich einfach gedruckt, der name meiner ersten Schicht als ein Beispiel.
Auch Ihr Modell ist möglicherweise Ausdruck der Ebenen in beiden Ebenen array (veraltet) oder der Schicht (ohne 's') array, aber Sie bekommen das wesentliche.
cq2.layer
eher alscq2.layers
Heute, caffe speichern Sie die GEWICHTE in zwei Formaten: BINARYPROTO, oder im HDF5. Binäre GEWICHTE Dateien mit der Erweiterung
.caffemodel
sind in BINARYPROTO-format, während die Erweiterung.caffemodel.h5
sind im HDF5-format. Da die im HDF5-format wurde eingeführt, um caffe vor kurzem, ich erwarte, dass die meisten Modelle, die Sie derzeit Begegnung in das Modell "zoo" in der eher "traditionellen" BINARYPROTO format.Wenn die GEWICHTE in gespeichert im HDF5-format, die Sie vielleicht in der Lage, pick durch Sie mit
h5py
Paket.Jedoch die BINARYPROTO-format basiert auf einer binären Serialisierung von google protocol buffer-format, das definiert ist durch
caffe.proto
. Ich bin kein Experte in der Protokoll-Puffer, aber ich vermute, Sie haben eine wirklich harte Zeit, die Entschlüsselung der Binär-Datei, ohne explizit eine "Zusammenstellung" dercaffe.proto
protobuf-definition-Dateien (das ist Teil von caffe-build).Ich nehme an, der einfachste Weg zu Holen, in der GEWICHTE ist durch die Installation von caffe und die python/C++ - Schnittstelle. Warum gehst du nicht einfach tun?
Caffe
, dann bekomme ichlearning rate
undloss
. Wenn diese änderung nicht für jede neue AusführungCaffe
, ist es fair zu dem Schluss, dassweights
gespeichert in.caffemodel
für die verschiedenen Läufe sind genau die gleichen?Wie es so passiert, ethereon eine wunderbare Bibliothek namens caffe-tensorflow zu konvertieren caffe Modelle zu Tensorflow code, aber das ist nicht alles! Es erlaubt auch den Benutzer zu konvertieren
.caffemodel
Dateien zu.npy
- Dateien, ohne zu bauen pycaffe! Es prüft, ob caffe gebaut wurde und wenn nicht, fällt es wieder auf ein reines google-protobuf Umsetzung.Ich verstehe nicht, warum Sie das tun wollen, ohne caffe/pycaffe, vielleicht sind Sie müde von der Bereitstellung von caffe an einer neuen Maschine ? Aber da caffemodel ist das Besondere binären Daten Art des caffe, mit Hilfe anderer Tools nicht das Leben leichter machen.
Wenn Sie darauf bestehen, dies zu tun, es ist ein anderes framework : Mokka auf Julia, in dem ein Verfahren zur Gewinnung von caffemodel im HDF5. Ich hoffe das konnte dir helfen.