Caffe“未知的求解器类型:SGD”

时间:2019-06-01 11:39:44

标签: c++ windows caffe

在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

原因是什么?

2 个答案:

答案 0 :(得分:0)

您似乎根本没有定义求解器的类型。
尝试添加

type: "SGD"

您的'solver.prototxt'

默认情况下,求解器类型应为"SGD",但是有两种定义方法:一种使用solver_type: SGD,另一种使用type: "SGD"。第一个选项在注释中标记为“已弃用”,因此我想这会给您带来麻烦。
通过使用不推荐使用的方法显式设置求解器类型,尝试避免使用默认设置。

更新
看着Windows分支readme,在Windows下编译共享库似乎是一个未解决的问题,特别是对于求解器。
我相信您遇到的问题与该问题有关。

答案 1 :(得分:0)

我通过将“ caffe / solvers / sgd_solver.cpp”包含到“ caffe.cpp”中解决了这个问题。