Safemotion Lib
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | List of all members
fastreid.engine.hooks.FreezeLayer Class Reference
Inheritance diagram for fastreid.engine.hooks.FreezeLayer:
fastreid.engine.train_loop.HookBase

Public Member Functions

 __init__ (self, model, optimizer, freeze_layers, freeze_iters)
 
 before_step (self)
 
 freeze_specific_layer (self)
 
 open_all_layer (self)
 
- Public Member Functions inherited from fastreid.engine.train_loop.HookBase
 before_train (self)
 
 after_train (self)
 
 after_step (self)
 

Public Attributes

 model
 
 optimizer
 
 freeze_layers
 
 freeze_iters
 
 param_freeze
 
 is_frozen
 

Protected Attributes

 _logger
 

Detailed Description

Definition at line 417 of file hooks.py.

Constructor & Destructor Documentation

◆ __init__()

fastreid.engine.hooks.FreezeLayer.__init__ ( self,
model,
optimizer,
freeze_layers,
freeze_iters )

Definition at line 418 of file hooks.py.

418 def __init__(self, model, optimizer, freeze_layers, freeze_iters):
419 self._logger = logging.getLogger(__name__)
420
421 if isinstance(model, DistributedDataParallel):
422 model = model.module
423 self.model = model
424 self.optimizer = optimizer
425
426 self.freeze_layers = freeze_layers
427 self.freeze_iters = freeze_iters
428
429 # Previous parameters freeze status
430 param_freeze = {}
431 for param_group in self.optimizer.param_groups:
432 param_name = param_group['name']
433 param_freeze[param_name] = param_group['freeze']
434 self.param_freeze = param_freeze
435
436 self.is_frozen = False
437

Member Function Documentation

◆ before_step()

fastreid.engine.hooks.FreezeLayer.before_step ( self)
Called before each iteration.

Reimplemented from fastreid.engine.train_loop.HookBase.

Definition at line 438 of file hooks.py.

438 def before_step(self):
439 # Freeze specific layers
440 if self.trainer.iter <= self.freeze_iters and not self.is_frozen:
441 self.freeze_specific_layer()
442
443 # Recover original layers status
444 if self.trainer.iter > self.freeze_iters and self.is_frozen:
445 self.open_all_layer()
446

◆ freeze_specific_layer()

fastreid.engine.hooks.FreezeLayer.freeze_specific_layer ( self)

Definition at line 447 of file hooks.py.

447 def freeze_specific_layer(self):
448 for layer in self.freeze_layers:
449 if not hasattr(self.model, layer):
450 self._logger.info(f'{layer} is not an attribute of the model, will skip this layer')
451
452 for param_group in self.optimizer.param_groups:
453 param_name = param_group['name']
454 if param_name.split('.')[0] in self.freeze_layers:
455 param_group['freeze'] = True
456
457 # Change BN in freeze layers to eval mode
458 for name, module in self.model.named_children():
459 if name in self.freeze_layers: module.eval()
460
461 self.is_frozen = True
462

◆ open_all_layer()

fastreid.engine.hooks.FreezeLayer.open_all_layer ( self)

Definition at line 463 of file hooks.py.

463 def open_all_layer(self):
464 self.model.train()
465 for param_group in self.optimizer.param_groups:
466 param_name = param_group['name']
467 param_group['freeze'] = self.param_freeze[param_name]
468
469 self.is_frozen = False
470
471

Member Data Documentation

◆ _logger

fastreid.engine.hooks.FreezeLayer._logger
protected

Definition at line 419 of file hooks.py.

◆ freeze_iters

fastreid.engine.hooks.FreezeLayer.freeze_iters

Definition at line 427 of file hooks.py.

◆ freeze_layers

fastreid.engine.hooks.FreezeLayer.freeze_layers

Definition at line 426 of file hooks.py.

◆ is_frozen

fastreid.engine.hooks.FreezeLayer.is_frozen

Definition at line 436 of file hooks.py.

◆ model

fastreid.engine.hooks.FreezeLayer.model

Definition at line 423 of file hooks.py.

◆ optimizer

fastreid.engine.hooks.FreezeLayer.optimizer

Definition at line 424 of file hooks.py.

◆ param_freeze

fastreid.engine.hooks.FreezeLayer.param_freeze

Definition at line 434 of file hooks.py.


The documentation for this class was generated from the following file: