咖啡"未知求解器类型:SGD"

Caffe "Unknown solver type : SGD"

本文关键字:类型 SGD 未知 咖啡      更新时间:2023-10-16

在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 内容:

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"

到你的'solver.prototxt'.

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

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

我通过将"caffe/solvers/sgd_solver.cpp"包含在"caffe.cpp"中来解决问题。