在SSD的python执行文件ssd_pascal.py中有如下代码用于创建solver配置文件,
solver = caffe_pb2.SolverParameter(
train_net=train_net_file,
test_net=[test_net_file],
snapshot_prefix=snapshot_prefix,
**solver_param)
其中solver_param是一个字典,包含了训练一些超参数的设置,
solver_param = {
# Train parameters
'base_lr': base_lr,
'weight_decay': 0.0005,
'lr_policy': "multistep",
#'stepvalue': [80000, 100000, 120000],
'stepvalue': [80000,100000,120000],
'gamma': 0.1,
'momentum': 0.9,
'iter_size': iter_size,
#'max_iter': 120000,
#'snapshot': 80000,
'max_iter': 120000,
'snapshot': 10000,
'display': 10,
'average_loss': 10,
'type': "SGD",
'solver_mode': solver_mode,
'device_id': device_id,
'debug_info': False,
'snapshot_after_train': True,
# Test parameters
'test_iter': [test_iter],
#'test_interval': 10000,
'test_interval': 10000,
'eval_type': "detection",
'ap_version': "11point",
'test_initialization': False,
}
我把优化方法从SGD改为Adam,训练正常进行,但是明显不对,因为loss显示输出还是从sgd_layer.cpp中输出的,模型结果确实也不对。请问caffe_pb2.SolverParameter是在哪里定义,我想看看里面怎么调用这个参数

SSD训练修改梯度下降法
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-