optimizer构造起来就相对比较复杂了,来看一下config文件中optimizer的配置optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001),mmdetecion还是用pytorch的Optimizer类作为优化器,所以我们要用注册器机制将pytorch中的SGD、Adam等都注册了。下面我们先回忆一下pytorch.Optimizer的构造参数,比如:{'...
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001) # 优化参数,lr为学习率,momentum为动量因子,weight_decay为权重衰减因子optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2)) # 梯度均衡参数 # learning policy lr_config = dict( policy='step', # 优化策略...
MMDetection支持所有的PyTorch定义的优化器(optimizer),如果想要使用某个优化器只需要修改配置文件中optimizer字段即可,比如想要使用Adam优化器则在配置文件中写入下面一行。 optimizer = dict(type='Adam', lr=0.0003, weight_decay=0.0001) 1. 当然,往往我们需要使用自己实现的优化器,那么按照规范,需要在项目根目录下的...
constructor_type = optimizer_cfg.pop('constructor', #optimizer_cfg字典中无"constructor"这个键,则返回DefaultOptimizerConstructor 'DefaultOptimizerConstructor') paramwise_cfg = optimizer_cfg.pop('paramwise_cfg', None) # 同上 optim_constructor = build_optimizer_constructor( # 实际上调用的是build_from_c...
(interval=5, metric='bbox') # 5个epoch验证一次optimizer_config = dict(grad_clip=dict(max_norm=0.1, norm_type=2)) # 设置梯度裁剪(default_runtime.py中默认为None)checkpoint_config = dict(interval=20) # 20个epoch保存一次权重log_config = dict(interval=50, # 每50次迭代训练就打印一次信息(...
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2)) lr_config = dict( policy='step', warmup='linear', warmup_iters=500, warmup_ratio=1.0 / 3, step=[8, 11]) 在上面的代码中,lr=0.02指定了初始学习率为0.02。lr_config字典中则定义了学习率调整策略,包括学习率调整方式(pol...
runner.register_training_hooks(cfg.lr_config,optimizer_config,cfg.checkpoint_config,cfg.log_config,cfg.get('momentum_config',None))#5.如果需要 val,则还需要注册 EvalHook runner.register_hook(eval_hook(val_dataloader,**eval_cfg))#6.注册用户自定义 hook ...
optimizer_config,cfg.checkpoint_config,cfg.log_config,cfg.get('momentum_config',None))# 最后开始...
https://github.com/open-mmlab/mmdetection/blob/master/tools/convert_datasets/pascal_voc.py)。 然后,你可以简单地使用CustomDataset。自定义优化 在mmdet/core/optimizer/copy_of_sgd.py中定义了定制优化器CopyOfSGD的示例。 更一般地,可以如下定义定制的优化器。在mmdet/core/optimizer/my_optimizer.py中:...
由于DE 算法不使用梯度进行优化,因此并不要求优化的函数是连续的或是可导的,如果使用的同学对优化的目标有特殊的需求,也可以继承小工具中的 YOLODEAnchorOptimizer 类并修改需要优化的函数,就可以很方便的控制 anchor 优化的结果。 如何使用这个小工具来优化自己数据集上的 anchor 超参呢?