2016-07-15 14 views
0

Ich bekomme Form Mismatch Fehler auf FC-Schicht, wenn ich versuche, trainierte Netz in C++ zu laden. My Eingangsschicht in Zug/Prüfphase (unterscheiden sich nur durch die Quelle und die Chargengröße, sind einige params weggelassen):Form Mismatch beim Kopieren Gewichte von eigenen trainierten Netz in Caffe

layer { 
    type: "ImageData" 
    image_data_param { 
     batch_size: 8 
     new_height: 256 
     new_width: 256 
    } 
    transform_param { 
     crop_size: 227 
    } 
} 

Eingangsschicht zum Bereitstellen von:

layer { 
    type: "Input" 
    input_param { shape: { dim: 1 dim: 3 dim: 256 dim: 256 }} 
} 

Fehler:

Cannot copy param 0 weights from layer 'fc4'; shape mismatch. Source param shape is 8 26912 (215296); target param shape is 8 32768 (262144).

Ich fand this Antwort, aber mein eigenes Modell ist geschult und getestet. Könnten Sie etwas Licht auf dieses Thema werfen?

+0

Ich würde erwarten, dass die Abweichung viel früher als ** fc4 ** erscheint. Können Sie Ihre Topologie veröffentlichen? – Prune

+0

@Prune, wenn alle Layer vor 'fc4' 'Convolution'-Layer sind, dann gibt es kein Problem nur für den vollständig verbundenen Layer. – Shai

+0

@Shai - richtig. Deshalb versuche ich mehr Informationen zu sammeln. Die Eingaben sind, soweit berichtet, gleich groß. Eine Reihe von CONV-Schichten würde keinen Fehler erzeugen. Nicht übereinstimmende Eingaben könnten/sollten jedoch den ersten CONV auslösen. – Prune

Antwort

0

Sie füttern Ihre Netze mit unterschiedlich großen Eingängen: Während des Trainings sind Sie cropping die Eingänge zu 227x277, während Sie während des Tests nicht zuschneiden und die Bilder bei 256x256 verlassen. Dies führt zu dem Fehler, den Sie haben.

+0

danke, ich verstehe 'crop_size' Parameter der Eingabeebenen nicht. [Official tutorial] (http://caffe.berkeleyvision.org/tutorial/data.html) sagt: ** Random cropping kann als einfache Datenerweiterung ** durchgeführt werden. Und ich dachte, es ist etwas wie zufällige Crop & Scale mit peserving Hauptgröße (256). – esterlein

+0

1) Warum brauchen Sie dann die Parameter 'new_height' und' new_width'? – esterlein

+0

2) Wenn ich während des Tests meine 'input_param shape' auf 227 ändere, bekomme ich ** Network sollte genau einen Eingang ** Fehler haben. Liegt es an der neuen Eingabegröße des Modells? – esterlein