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

D .*_*ark 5 c++ windows machine-learning caffe

在 Windows 10 下构建 Caffe(最新版本,仅 CPU 构建)用于 VS C++ 项目。以至于一切都开始工作了。但是在创建Solver类的实例时,会发生错误。

SolverParameter solverParam;
ReadSolverParamsFromTextFileOrDie("solver.prototxt", &solverParam);
boost::shared_ptr<Solver<float>> solver(SolverRegistry<float>::CreateSolver(solverParam));
Run Code Online (Sandbox Code Playgroud)

输出:

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: ***
Run Code Online (Sandbox Code Playgroud)

solver.prototxt 内容:

net: "model.prototxt"
base_lr: 0.02
lr_policy: "step"
gamma: 0.5
stepsize: 500000
display: 10
max_iter: 5000
snapshot: 1000000
snapshot_prefix: "XORProblem"
solver_mode: CPU
test_iter: 1
test_interval: 2000
Run Code Online (Sandbox Code Playgroud)

是什么原因?

Sha*_*hai 0

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

type: "SGD"
Run Code Online (Sandbox Code Playgroud)

给你的'solver.prototxt'.

求解器类型应该是"SGD"默认的,但有两种定义方法:一种是使用solver_type: SGD,另一种是使用type: "SGD"。第一个选项在评论中被标记为“已弃用”,所以我想这会给您带来麻烦。
尝试通过使用未弃用的方法显式设置求解器类型来避免默认设置。

更新:
查看 Windows 分支自述文件,似乎在 Windows 下编译共享库存在一个未解决的问题,特别是求解器。
我相信您遇到的问题与该问题有关。