MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / save

Method save

python/paddle/hapi/model.py:391–436  ·  view source on GitHub ↗
(self, path)

Source from the content-addressed store, hash-verified

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()

Callers

nothing calls this directly

Calls 7

existsMethod · 0.80
list_varsMethod · 0.80
get_tensorFunction · 0.50
state_dictMethod · 0.45
getMethod · 0.45
nameMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected