mmd_hook
MMCV 自定义
假设想要添加MyOptimizer的新优化器,有a,b,c三个参数,需要创建一个新的路径
mmdet/core/optimizer。然后在config文件中应用一个新的优化器
mmdet/core/optimizer/my_optimizer.py:
from .registry import OPTIMIZERS
from torch.optim import Optimizer
@OPTIMIZERS.register_module()
class MyOptimizer(Optimizer):
def __init__(self, a, b, c)1.2.2 将新的优化器添加到注册器中
上边定义完成的模块想要在config文件中使用,就必须import到一个明明空间中,两种方法,实现这个工作:
直接在
__init__.py文件中,导入,在mmdet/core/optimizer/__init__.py中from .my_optimizer import MyOptimizer在config文件中实现
custom_imports = dict(imports=['mmdet.core.optimizer.my_optimizer'], allow_failed_imports=False)
该模块mmdet.core.optimizer.my_optimizer将在程序开始时导入,然后自动注册MyOptimizer这个类。请注意,仅应该导入包含MyOptimizer的包。
mmdet.core.optimizer.my_optimizer.MyOptimizer
无法直接导入。
实际上,使用这种导入的方式,使用者可以直接使用不同的文件路径结构,只要模块的路径在PYTHONPATH中可以找到即可。
1.2.3 在config文件中指定优化器
在config文件中的optimizer字段中使用MyOptimizer:
# 原始的优化器使用方法
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
# 自定义优化器使用方法
optimizer = dict(type='MyOptimizer', a=a_value, b=b_value, c=c_value)All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
