mmengine.model.initialize — mmengine 0.10.7 documentation (original) (raw)
mmengine.model.initialize(module, init_cfg)[source]¶
Initialize a module.
Parameters:
- module (
torch.nn.Module
) – the module will be initialized. - init_cfg (dict | list_[_dict]) – initialization configuration dict to define initializer. OpenMMLab has implemented 6 initializers including
Constant
,Xavier
,Normal
,Uniform
,Kaiming
, andPretrained
.
Example
module = nn.Linear(2, 3, bias=True) init_cfg = dict(type='Constant', layer='Linear', val =1 , bias =2) initialize(module, init_cfg) module = nn.Sequential(nn.Conv1d(3, 1, 3), nn.Linear(1,2))
define key
'layer'
for initializing layer with differentconfiguration
init_cfg = [dict(type='Constant', layer='Conv1d', val=1), dict(type='Constant', layer='Linear', val=2)] initialize(module, init_cfg)
define key
'override'
to initialize some specific part inmodule
class FooNet(nn.Module): def init(self): super().init() self.feat = nn.Conv2d(3, 16, 3) self.reg = nn.Conv2d(16, 10, 3) self.cls = nn.Conv2d(16, 5, 3) model = FooNet() init_cfg = dict(type='Constant', val=1, bias=2, layer='Conv2d', override=dict(type='Constant', name='reg', val=3, bias=4)) initialize(model, init_cfg) model = ResNet(depth=50)
Initialize weights with the pretrained model.
init_cfg = dict(type='Pretrained', checkpoint='torchvision://resnet50') initialize(model, init_cfg)
Initialize weights of a sub-module with the specific part of
a pretrained model by using "prefix".
url = 'http://download.openmmlab.com/mmdetection/v2.0/retinanet/'\ 'retinanet_r50_fpn_1x_coco/'
'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth' init_cfg = dict(type='Pretrained', checkpoint=url, prefix='backbone.')