| 536 | printlog('add buffer {} as neck_specific'.format(name)) |
| 537 | |
| 538 | def add_decoder_specific(m, decoder_specific): |
| 539 | for name, param in m.named_parameters(): |
| 540 | param.task_specific = False |
| 541 | param.backbone_specific = False |
| 542 | param.neck_specific = False |
| 543 | param.decoder_specific = decoder_specific |
| 544 | if decoder_specific: |
| 545 | printlog('add param {} as decoder_specific'.format(name)) |
| 546 | |
| 547 | if not hasattr(torch.nn.Module, 'named_buffers'): |
| 548 | printlog('registering named_buffers for nn.Module at add_decoder_specific') |
| 549 | torch.nn.Module.named_buffers = named_buffers |
| 550 | |
| 551 | #m.cuda() # neccesary for broadcast in DistModule, since buffers are tensors which will be changed after .cuda() |
| 552 | for name, buffer in m.named_buffers(): |
| 553 | buffer.task_specific = False |
| 554 | buffer.backbone_specific = False |
| 555 | buffer.neck_specific = False |
| 556 | buffer.decoder_specific = decoder_specific |
| 557 | if decoder_specific: |
| 558 | printlog('add buffer {} as decoder_specific'.format(name)) |
| 559 | |
| 560 | def add_aio_backbone_specific(m, backbone_specific, task_sp_list=(), neck_sp_list=()): |
| 561 | for name, param in m.named_parameters(): |