[Caffè]: Check failed: ShapeEquals(proto) Form-mismatch (Umformen nicht gesetzt)
Ich habe diesen Fehler und ich habe versucht, einen Blick in das Internet, aber ich habe nichts klar.
Trainierte ich meine net mit Caffe erfolgreich mit rund 82% Genauigkeit.
Jetzt versuche ich es mal mit einem Bild zu diesem code:
python python/classify.py --model_def examples/imagenet/imagenet_deploy.prototxt --pretrained_model caffe_mycaffe_train_iter_10000.caffemodel --images_dim 64,64 data/mycaffe/testingset/cat1/113.png foo --mean_file data/mycaffe/mycaffe_train_mean.binaryproto
ja, meine Bilder sind 64x64,
sind dies die letzten Zeilen, ich bin immer:
I0610 15:33:44.868100 28657 net.cpp:194] conv3 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868110 28657 net.cpp:194] norm2 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868120 28657 net.cpp:194] pool2 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868130 28657 net.cpp:194] relu2 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868142 28657 net.cpp:194] conv2 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868152 28657 net.cpp:194] norm1 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868162 28657 net.cpp:194] pool1 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868173 28657 net.cpp:194] relu1 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868182 28657 net.cpp:194] conv1 braucht nicht rückwärts-Berechnung.
I0610 15:33:44.868192 28657 net.cpp:235] Dieses Netzwerk erzeugt eine Ausgabe, die fc8_pascal
I0610 15:33:44.868214 28657 net.cpp:482] das Sammeln von Lern-Rate-und Weight-Decay.
I0610 15:33:44.868238 28657 net.cpp:247] Netzwerk-Initialisierung gemacht.
I0610 15:33:44.868249 28657 net.cpp:248] Speicher für Daten: 3136120
F0610 15:33:45.025965 28657 blob.cpp:458] Check failed: ShapeEquals(proto) Form-mismatch (Umformen nicht gesetzt)
* Überprüfen Fehler-stack-trace: *
Aborted (core dumped)
Ich habe versucht, die Einstellung nicht --mean_file und mehr Dinge, aber meine Aufnahmen sind vorbei.
Dies ist mein imagenet_deploy.prototxt, die ich geändert habe in einigen Parametern zu Debuggen, aber hat nicht funktioniert, nichts.
name: "MyCaffe"
input: "data"
input_dim: 10
input_dim: 3
input_dim: 64
input_dim: 64
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
convolution_param {
num_output: 64
kernel_size: 11
stride: 4
}
}
layer {
name: "relu1"
type: "ReLU"
bottom: "conv1"
top: "conv1"
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "norm1"
type: "LRN"
bottom: "pool1"
top: "norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "norm1"
top: "conv2"
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
group: 2
}
}
layer {
name: "relu2"
type: "ReLU"
bottom: "conv2"
top: "conv2"
}
layer {
name: "pool2"
type: "Pooling"
bottom: "conv2"
top: "pool2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "norm2"
type: "LRN"
bottom: "pool2"
top: "norm2"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv3"
type: "Convolution"
bottom: "norm2"
top: "conv3"
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
}
}
layer {
name: "relu3"
type: "ReLU"
bottom: "conv3"
top: "conv3"
}
layer {
name: "conv4"
type: "Convolution"
bottom: "conv3"
top: "conv4"
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
group: 2
}
}
layer {
name: "relu4"
type: "ReLU"
bottom: "conv4"
top: "conv4"
}
layer {
name: "conv5"
type: "Convolution"
bottom: "conv4"
top: "conv5"
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
group: 2
}
}
layer {
name: "relu5"
type: "ReLU"
bottom: "conv5"
top: "conv5"
}
layer {
name: "pool5"
type: "Pooling"
bottom: "conv5"
top: "pool5"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "fc6"
type: "InnerProduct"
bottom: "pool5"
top: "fc6"
inner_product_param {
num_output: 4096
}
}
layer {
name: "relu6"
type: "ReLU"
bottom: "fc6"
top: "fc6"
}
layer {
name: "drop6"
type: "Dropout"
bottom: "fc6"
top: "fc6"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
name: "fc7"
type: "InnerProduct"
bottom: "fc6"
top: "fc7"
inner_product_param {
num_output: 4096
}
}
layer {
name: "relu7"
type: "ReLU"
bottom: "fc7"
top: "fc7"
}
layer {
name: "drop7"
type: "Dropout"
bottom: "fc7"
top: "fc7"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
name: "fc8_pascal"
type: "InnerProduct"
bottom: "fc7"
top: "fc8_pascal"
inner_product_param {
num_output: 3
}
}
Wer könnte mir einen Anhaltspunkt?
Ich danke Ihnen sehr.
Geschieht das gleiche mit C++ und der Einstufung bin Sie bieten:
F0610 18:06:14.975601 7906 blob.cpp:455] Check failed: ShapeEquals(proto) Form-mismatch (Umformen nicht gesetzt)
* Überprüfen Fehler-stack-trace: *
@ 0x7f0e3c50761c google::LogMessage::Fail()
@ 0x7f0e3c507568 google::LogMessage::SendToLog()
@ 0x7f0e3c506f6a google::LogMessage::Flush()
@ 0x7f0e3c509f01 google::LogMessageFatal::~LogMessageFatal()
@ 0x7f0e3c964a80 caffe::Blob<>::FromProto()
@ 0x7f0e3c89576e caffe::Net<>::CopyTrainedLayersFrom()
@ 0x7f0e3c8a10d2 caffe::Net<>::CopyTrainedLayersFrom()
@ 0x406c32 Classifier::Classifier()
@ 0x403d2b main
@ 0x7f0e3b124ec5 (unbekannt)
@ 0x4041ce (unbekannt)
Aborted (core dumped)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie mich bestätigen, ob die grundlegenden Schritte korrekt sind.
Haben Sie versucht, ändern Sie den ersten parameter auf 1, wie Sie sind, nur am Rande ein einziges Bild.
Den oben genannten Fehler tritt auf, wenn die Abmessungen des oberen oder unteren blobs nicht korrekt. Und es gibt keine, wo das schief gehen könnte, andere als die input-blobs.
Edit 2:
ShapeEquals(proto) shape mismatch (reshape not set)
Fehlermeldung tritt auf, wenn 'Umformen' - parameter ist auf false gesetzt für die fromproto - Funktion aufrufen.Ich habe eine schnelle Suche für die fromproto Funktionsaufruf in der Bibliothek, wie gezeigt,hier. Andere als 'CopyTrainedLayersFrom" - Funktion keine andere Funktion tatsächlich legen die oben genannten parameter als
false
.Dies ist tatsächlich verwirrend. Zwei Methoden, die ich vorschlagen würde ist:
const bool kReshape = false; target_blobs[j]->FromProto(source_layer.blobs(j), kReshape);
ich werde es ändern und ich werde Sie wissen lassen!Hatte ich gerade den gleichen Fehler. In meinem Fall ist mein output-Parameter der letzten Schicht waren falsch: Schalt-datasets, änderte ich die Anzahl der Klassen im Zug.prototxt und konnte im test.prototxt (oder bereitstellen.prototxt). Die Korrektur dieser Fehler das problem bei mir gelöst.
In meinem Fall ist die Größe des Kernels in der zweiten convolutional layer in meinem solver-Datei unterscheidet sich von der in der Zug-Datei. Ändern der Größe in den solver-Datei das problem gelöst.