| 480 | self._load_optimizer(optim_state, executor) |
| 481 | |
| 482 | def _load_optimizer(self, state, executor): |
| 483 | prog = self._progs.get('train', None) |
| 484 | optim = [] |
| 485 | for var in prog.list_vars(): |
| 486 | if not var.is_parameter: |
| 487 | if var.persistable: |
| 488 | optim.append(var) |
| 489 | |
| 490 | if not optim: |
| 491 | return |
| 492 | |
| 493 | base.core._create_loaded_parameter(optim, global_scope(), executor) |
| 494 | |
| 495 | converted_state = dict(state) |
| 496 | for var in optim: |
| 497 | if var.name.startswith("learning_rate_"): |
| 498 | # When using static learning rate, static-graph would make it |
| 499 | # a persistable var named 'unique_name.generate("learning_rate")', |
| 500 | # However, dygraph wouldn't save it. |
| 501 | if var.name not in state: |
| 502 | continue |
| 503 | assert var.name in converted_state, ( |
| 504 | f"variable [{var.name}] is not in optimizer state file" |
| 505 | ) |
| 506 | self._set_var(var.name, converted_state[var.name]) |
| 507 | |
| 508 | def _run(self, inputs, labels=None): |
| 509 | compiled_prog = self._compiled_progs.get(self.mode, None) |