在Windows 10下构建Caffe(最新版本,仅用于CPU),用于VS C ++项目。这样一切就开始麻烦了。但是,在创建Solver
类的实例时,会发生错误。
SolverParameter solverParam;
ReadSolverParamsFromTextFileOrDie("solver.prototxt", &solverParam);
boost::shared_ptr<Solver<float>> solver(SolverRegistry<float>::CreateSolver(solverParam));
输出:
WARNING: Logging before InitGoogleLogging() is written to STDERR
F0601 14:21:42.943118 10832 solver_factory.cpp:29] Check failed: registry.count(type) == 1 (0 vs. 1) Unknown solver type: SGD (known types: )
*** Check failure stack trace: ***
solver.prototxt内容:https://pastebin.com/5DYHrYuN
原因是什么?
答案 0 :(得分:0)
您似乎根本没有定义求解器的类型。
尝试添加
type: "SGD"
您的'solver.prototxt'
。
默认情况下,求解器类型应为"SGD"
,但是有两种定义方法:一种使用solver_type: SGD
,另一种使用type: "SGD"
。第一个选项在注释中标记为“已弃用”,因此我想这会给您带来麻烦。
通过使用不推荐使用的方法显式设置求解器类型,尝试避免使用默认设置。
更新:
看着Windows分支readme,在Windows下编译共享库似乎是一个未解决的问题,特别是对于求解器。
我相信您遇到的问题与该问题有关。
答案 1 :(得分:0)
我通过将“ caffe / solvers / sgd_solver.cpp”包含到“ caffe.cpp”中解决了这个问题。