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

Method _make_program

python/paddle/hapi/model.py:591–689  ·  view source on GitHub ↗
(self, mode)

Source from the content-addressed store, hash-verified

589 self._initialize(self._progs[mode], mode)
590
591 def _make_program(self, mode):
592 prog = self._progs.get(mode, None)
593 if prog is not None:
594 return
595
596 prog = self._orig_prog.clone()
597
598 losses = []
599 metrics = []
600 prog_param = prog.get_all_parameter_values()
601
602 named_sublayers = self.model.network.named_sublayers(
603 prefix='',
604 include_self=True,
605 remove_duplicate=True,
606 )
607 for layer_prefix, sublayer in named_sublayers:
608 params = sublayer._parameters.items()
609 for key, param in params:
610 sublayer._parameters[key] = prog_param[param.name]
611
612 with base.program_guard(prog, self._startup_prog):
613 inputs = self.model._inputs
614 labels = self.model._labels if self.model._labels else []
615 inputs = [k._create_feed_layer() for k in to_list(inputs)]
616 labels = [k._create_feed_layer() for k in to_list(labels)]
617 self._label_vars[mode] = labels
618
619 if mode == 'train' and self.model._optimizer:
620 opt_param = []
621 for key, value in prog_param.items():
622 opt_param.append(value)
623
624 self.model._optimizer._parameter_list = list(opt_param)
625
626 if self._amp_level != "O0" and core.is_compiled_with_cuda:
627 self.model.network, self.model._optimizer = (
628 paddle.amp.decorate(
629 models=self.model.network,
630 optimizers=self.model._optimizer,
631 level=self._amp_level,
632 )
633 )
634
635 with paddle.amp.auto_cast(
636 level=self._amp_level, dtype='float16', use_promote=True
637 ):
638 outputs = to_list(self.model.network.forward(*inputs))
639
640 if mode != 'test' and self.model._loss:
641 losses = self.model._loss(*(outputs + labels))
642
643 if mode != 'test':
644 for metric in self.model._metrics:
645 metrics.append(
646 to_list(metric.compute(*(outputs + labels)))
647 )
648 else:

Callers 1

prepareMethod · 0.95

Calls 12

listFunction · 0.85
named_sublayersMethod · 0.80
_create_feed_layerMethod · 0.80
decorateMethod · 0.80
to_listFunction · 0.70
getMethod · 0.45
cloneMethod · 0.45
itemsMethod · 0.45
appendMethod · 0.45
forwardMethod · 0.45
computeMethod · 0.45
minimizeMethod · 0.45

Tested by

no test coverage detected