Dies ist mein train.prototxt . Und das ist mein deploy.prototxt .
Wenn ich meine Deploy-Datei laden will, bekomme ich diesen Fehler:
%Vor%
Also habe ich die Datenschicht entfernt:
%Vor%
Dann habe ich bottom: "data"
aus der conv1-Ebene entfernt.
Danach habe ich diesen Fehler:
%Vor%
Ich habe bottom: "label"
aus der verlustschicht entfernt. Und ich habe diesen Fehler:
%Vor%
Was soll ich tun, um es zu reparieren und meine Deploy-Datei zu erstellen?
Es gibt zwei Hauptunterschiede zwischen einem "train" Prototxt und einem "deploy":
1. Eingaben: Während für das Training Daten auf einem vorverarbeiteten Trainingsdatensatz (lmdb / HDF5 usw.) festgelegt sind, erfordert das Bereitstellen des Netzes, dass es andere Eingaben "zufallsgenerierter" verarbeitet Daher besteht die erste Änderung darin, die Eingabeschichten zu entfernen (Ebenen, die während der ZUG- und TEST-Phasen "Daten" und "Etiketten" drücken). Um die Eingabeschichten zu ersetzen, müssen Sie die folgende Deklaration hinzufügen:
%Vor%Diese Deklaration stellt nicht die tatsächlichen Daten für das Netz bereit, sondern teilt dem Netz mit, welche Form zu erwarten ist, so dass Caffe die erforderlichen Ressourcen vorab zuweisen kann.
2. Verlust: Die obersten Schichten in einem Trainingsprototxt definieren die Verlustfunktion für das Training. Dies beinhaltet normalerweise die Grundwahrheitsbezeichnungen. Wenn Sie das Netz bereitstellen, haben Sie keinen Zugriff mehr auf diese Beschriftungen. Daher sollten Verlustschichten in "Vorhersage" -Ausgaben umgewandelt werden. Beispielsweise sollte eine "SoftmaxWithLoss" -Schicht in eine einfache "Softmax" -Schicht konvertiert werden, die Klassenwahrscheinlichkeit anstelle von Log-Likelihood-Verlust ausgibt. Einige andere Verlustschichten haben bereits Vorhersagen als Eingaben, daher reicht es, sie einfach zu entfernen.
Update : siehe dieses Tutorial für weitere Informationen.
Neben den Empfehlungen von @Shai sollten Sie auch die Dropout-Layer deaktivieren.
Obwohl Jia Yangqing, Autor von Caffe, einmal gesagt hat, dass Dropout-Layer einen vernachlässigbaren Einfluss auf die Testergebnisse haben ( google group conversation, 2014 ), schlagen andere Deeplearning-Tools vor, Dropout in der Bereitstellungsphase zu deaktivieren (z. B. lasange ).
Tags und Links neural-network deep-learning conv-neural-network caffe pycaffe