(filename,
model,
optimizer: Optimizer = None,
lr_scheduler: _LRScheduler = None)
| 116 | |
| 117 | |
| 118 | def load_checkpoint(filename, |
| 119 | model, |
| 120 | optimizer: Optimizer = None, |
| 121 | lr_scheduler: _LRScheduler = None): |
| 122 | if not os.path.exists(filename): |
| 123 | raise ValueError(f'Checkpoint file {filename} does not exist!') |
| 124 | checkpoint = torch.load(filename, map_location='cpu', weights_only=True) |
| 125 | |
| 126 | if optimizer is not None: |
| 127 | if 'optimizer' in checkpoint: |
| 128 | if isinstance(optimizer, Optimizer): |
| 129 | optimizer.load_state_dict(checkpoint['optimizer']) |
| 130 | elif isinstance(optimizer, dict): |
| 131 | optimizer_dict = checkpoint['optimizer'] |
| 132 | for key, optimizer_ins in optimizer.items(): |
| 133 | if key in optimizer_dict: |
| 134 | optimizer_ins.load_state_dict(optimizer_dict[key]) |
| 135 | else: |
| 136 | logger.warning( |
| 137 | f'The state dict of optimizer {key} cannot be found in checkpoint file: {filename}' |
| 138 | ) |
| 139 | else: |
| 140 | logger.warning( |
| 141 | f'The state dict of optimizer cannot be found in checkpoint file: {filename}' |
| 142 | ) |
| 143 | |
| 144 | if lr_scheduler is not None: |
| 145 | if 'lr_scheduler' in checkpoint: |
| 146 | lr_scheduler.load_state_dict(checkpoint['lr_scheduler']) |
| 147 | else: |
| 148 | logger.warning( |
| 149 | f'The state dict of lr_scheduler cannot be found in checkpoint file: {filename}' |
| 150 | ) |
| 151 | |
| 152 | if model is not None: |
| 153 | state_dict = checkpoint if 'state_dict' not in checkpoint else checkpoint[ |
| 154 | 'state_dict'] |
| 155 | model.load_state_dict(state_dict) |
| 156 | return checkpoint.get('meta', {}) |
| 157 | |
| 158 | |
| 159 | def load_task_model_checkpoint(model_to_load, |
no test coverage detected
searching dependent graphs…