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 内容:
Run Code Online (Sandbox Code Playgroud)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
是什么原因?
看来您根本没有定义求解器的类型。
尝试添加
type: "SGD"
Run Code Online (Sandbox Code Playgroud)
给你的'solver.prototxt'.
求解器类型应该是"SGD"默认的,但有两种定义方法:一种是使用solver_type: SGD,另一种是使用type: "SGD"。第一个选项在评论中被标记为“已弃用”,所以我想这会给您带来麻烦。
尝试通过使用未弃用的方法显式设置求解器类型来避免默认设置。
更新:
查看 Windows 分支自述文件,似乎在 Windows 下编译共享库存在一个未解决的问题,特别是求解器。
我相信您遇到的问题与该问题有关。