2017-02-14 2 views
1

Ich versuche, die zu verstehen. Dafür laufe ich Schritt für Schritt für feature_extraction.cpp und classification.cpp.Understanding Caffe Bibliothek

In diesen cpp-Dateien habe ich layers, prototxt file, caffemodel, net.cpp, caffe.pb.cc, caffe.pb.h Dateien gefunden.

Ich weiß, Caffe wird mit verschiedenen Schichten gebildet. Daher werden diese Layer-Dateien innerhalb des Layer-Ordners verwendet.

prototxt-datei ist für die struktur eines bestimmten netzwerkes wie googernet, alexnet etc. gedacht. Verschiedenes netz hat eine andere struktur.

Caffemodel ist das trainierte Modell mit Caffe-Bibliothek für eine bestimmte Art von Netzstruktur.

Was machen diese net.cpp, caffe.pb.cc? Ich meine, wie man ihre Rollen bei der Bildung dieses Caffe Deep Learning Network versteht.

+0

Es gibt ein gutes Tutorial für caffe.Please siehe (http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html) – batuman

Antwort

2

Sie verstehen richtig, dass Caffe tiefes Lernen implementiert, indem "Schichten" übereinander gestapelt werden, um ein "Netz" zu bilden.

'net.cpp'
Jede Schicht arbeitet als ein "Funktionsblock" und sein Verhalten/Implementierung ist in src/caffe/layers/<layer>.cpp, src/caffe/layers/<layer>.cu und include/caffe/layers/<layer>.hpp definiert.
Der Code, der tatsächlich alle Schichten in ein Netz "stapelt", kann (meistens) in net.cpp gefunden werden.

'caffe.pb.h', 'caffe.pb.cc'
Um die spezifische Struktur einer bestimmten Tiefe net Architektur (z.B. AlexNet, GoogLeNet, RESNET etc.) verwendet caffe Bibliothek zu definieren. Das spezifische Format des Caffe-Protokollpuffers ist in src/caffe/proto/caffe.proto definiert. Die caffe.proto ist "kompiliert" mit google protobuffer Compiler zu produzieren 'caffe.pb.h' und 'caffe.pb.cc' C++ - Code zum Parsen und Verarbeiten Caffe prototxt und caffemodel Dateien.

+0

I gedacht 'caffe.pb.h', 'caffe.pb.cc' sind generische Struktur des tiefen Netzes und individuelle Struktur wie AlexNet, GoogLeNet, ResNet usw. werden gebildet, indem man prototxt Datei verwendet. Diese Prototypdatei spezifiziert die Struktur eines bestimmten Netzes wie AlexNet oder GoogLeNet. Basierend auf der Prototxt-Datei, die net.cpp verwendet, wird in der Laufzeit ein Netzwerk gebildet, das die generischen Strukturen 'caffe.pb.h', 'caffe.pb.cc' verwendet. Ist es nicht wahr? – batuman

+0

Je nachdem, was Sie sagten "Das spezifische Format des Caffe-Protokollpuffers ist in src/caffe/proto/caffe.proto." Definiert, sind alle diese Strukturen wie AlexNet, GoogLeNet, ResNet usw. bereits in 'caffe.pb.h' festgelegt ',' caffe.pb.cc '. Lassen Sie mich sagen, wenn ich eine neue prototxt-Datei für eine andere Netzstruktur bilden möchte, ist es nicht möglich? – batuman

+0

@batuman können Sie es als caffe.proto definieren eine "Sprache" und caffe.pb. * Übersetzen diese "Sprache", so dass es in c/C++ verarbeitet werden kann. Sie können Ihre eigenen Netze in Prototxt schreiben, ohne dass Sie irgendeinen C++ Code schreiben oder kompilieren müssen. – Shai