Caffe-layer-Erstellung Fehler
Ich versuche zu laden in TEST-phase einer Netzwerk-Konfiguration, die einen Speicher-Daten-layer als erstes und dann ein convolution-Schicht. Die MemoryData layer-Erstellung erfolgreich ist,
Aber die convolution-Schicht-Erstellung scheitert an folgendem Ort:
LOG(INFO) << "Creating layer " << param.name();
const string& type = param.type();
CreatorRegistry& registry = Registry();
CHECK_EQ(registry.count(type), 1) << "Unknown layer type: " << type
<< " (known types: " << LayerTypeList() << ")";
Gedruckt Fehler ist:
F0519 14:54:12.494139 14504 layer_factory.hpp:77] Check failed:
Registrierung.count(t ype) == 1 (0 vs. 1) Unbekannter layer-Typ: Convolution
(bekannte Arten: MemoryData)
registry ist ein Eintrag nur, in der Tat mit MemoryData.
Wenn man in der registry-Erstellung Funktionen, es sieht aus wie es zum ersten (und letzten, da dies eine singletone) aufgerufen
REGISTER_LAYER_CLASS(MemoryData);
in memory_data_later.cpp.
Sehe ich ähnlich REGISTER_LAYER_CLASS
Anrufe für die anderen unterstützten Schichten, aber es sieht aus wie Sie nie genannt.
Wie könnte ich es lösen?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler tritt auf, wenn Sie versuchen, zu verknüpfen caffe statisch zu einem ausführbaren Programm. Du musst extra linker-flags stellen Sie sicher, dass layer-Registrierung-code wird mitgeliefert.
Wenn Sie mit cmake werfen Sie einen Blick auf Ziele.cmake:
Und dann, wo Sie erstellen Ihre Zielgruppe:
Eine schnelle Lösung wäre der Aufbau und link caffe als shared lib statt statisch.
Siehe auch dieser Beitrag.
Nur zur Vervollständigung dieser für MSVC Kompilierung unter Windows:
Verwenden /OPT:NOREF oder /INCLUDE linker-Optionen auf das Ziel ausführbare Datei oder eine dll.
Ersetzen
-l$(PROJECT)
mit$(STATIC_LINK_COMMAND)
im Makefile an die richtige Stelle, und entfernen Sie die nun unnötige runtime load path:-Wl,-rpath,$(ORIGIN)/../lib
.