Я пытаюсь извлечь функции, используя caffenet.caffemodel
. Я реализую extract_features.cpp
в Visual Studio. Моя библиотека caffe также построена как статическая библиотека и ссылка на extract_features.exe
. Когда я запускаю код, у меня есть ошибки, какСоздайте ошибку слоя в layer_factory.hpp
E0906 02:10:00.842056 4356 extract_features.cpp:74] Using CPU
F0906 02:10:04.035171 4356 layer_factory.hpp:88] Check failed: registry.count(t
ype) == 1 (0 vs. 1) Unknown layer type: ImageData (known types:)
*** Check failure stack trace: ***
ошибка происходит в layer_factory.hpp
static shared_ptr<Layer<Dtype> > CreateLayer(const LayerParameter& param)
{
if (Caffe::root_solver()) {
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: " << LayerTypeListString() << ")";
return registry[type](param);
}
Первоначально был я думал об ошибке Link. Теперь я смотрю внимательнее и понимаю, что проблема с линкером. Что может быть ошибкой?
Я думаю, проблема в том, что у вас есть кафе как статическая библиотека. Я вспоминаю подобную проблему в mac-os, вам придется копать там решение. – Shai
Да, они (http://stackoverflow.com/questions/30325108/caffe-layer-creation-failure) также имеют одинаковую проблему и считают статическую библиотечную проблему, поскольку код регистрации слоя не включен в ссылку. Но при отладке я могу запустить весь этот исходный код внутри layer_factory.hpp. Спасибо, что я в этом поработаю. – batuman
Выполнение кода в файлах заголовков во время отладки не обязательно означает, что оно доступно в выпуске. – Shai