(self, path)
| 389 | return self.model.network.parameters(*args, **kwargs) |
| 390 | |
| 391 | def save(self, path): |
| 392 | def _save(state, path): |
| 393 | if not state: |
| 394 | return |
| 395 | state = { |
| 396 | k: ( |
| 397 | to_numpy(v) |
| 398 | if isinstance(v, paddle.base.libpaddle.pir.Value) |
| 399 | else v |
| 400 | ) |
| 401 | for k, v in state.items() |
| 402 | } |
| 403 | with open(path, 'wb') as f: |
| 404 | pickle.dump(state, f) |
| 405 | |
| 406 | def get_tensor(var): |
| 407 | t = global_scope().find_var(var.name).get_tensor() |
| 408 | return np.array(t) |
| 409 | |
| 410 | base = os.path.basename(path) |
| 411 | assert base != "", "path should be of 'dirname/filename' format" |
| 412 | dir_name = os.path.dirname(path) |
| 413 | if dir_name and not os.path.exists(dir_name): |
| 414 | os.makedirs(dir_name) |
| 415 | param_path = path + ".pdparams" |
| 416 | _save(self.model.network.state_dict(), param_path) |
| 417 | |
| 418 | prog = self._progs.get('train', None) |
| 419 | |
| 420 | if prog is None or self.model._optimizer is None: |
| 421 | return |
| 422 | # XXX `optimizer.state_dict()` only work in dygraph mode |
| 423 | optim_path = path + ".pdopt" |
| 424 | |
| 425 | opts = [] |
| 426 | for var in prog.list_vars(): |
| 427 | if var.persistable and var.get_defining_op().name() == "pd_op.data": |
| 428 | opts.append(var) |
| 429 | |
| 430 | opt_dict = { |
| 431 | var.name: get_tensor(var) for var in opts if var.persistable |
| 432 | } |
| 433 | if not opt_dict: |
| 434 | return |
| 435 | |
| 436 | _save(opt_dict, optim_path) |
| 437 | |
| 438 | def _set_var(self, name, ndarray): |
| 439 | t = global_scope().find_var(name).get_tensor() |
nothing calls this directly
no test coverage detected