| 492 | printlog('add buffer {} as task_specific'.format(name)) |
| 493 | |
| 494 | def add_backbone_specific(m, backbone_specific): |
| 495 | for name, param in m.named_parameters(): |
| 496 | param.task_specific = False |
| 497 | param.backbone_specific = backbone_specific |
| 498 | param.neck_specific = False |
| 499 | param.decoder_specific = False |
| 500 | if backbone_specific: |
| 501 | printlog('add param {} as backbone_specific'.format(name)) |
| 502 | |
| 503 | if not hasattr(torch.nn.Module, 'named_buffers'): |
| 504 | printlog('registering named_buffers for nn.Module at add_backbone_specific') |
| 505 | torch.nn.Module.named_buffers = named_buffers |
| 506 | |
| 507 | #m.cuda() # neccesary for broadcast in DistModule, since buffers are tensors which will be changed after .cuda() |
| 508 | for name, buffer in m.named_buffers(): |
| 509 | buffer.task_specific = False |
| 510 | buffer.backbone_specific = backbone_specific |
| 511 | buffer.neck_specific = False |
| 512 | buffer.decoder_specific = False |
| 513 | if backbone_specific: |
| 514 | printlog('add buffer {} as backbone_specific'.format(name)) |
| 515 | |
| 516 | def add_neck_specific(m, neck_specific): |
| 517 | for name, param in m.named_parameters(): |