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

Method update

python/paddle/static/nn/common.py:4054–4088  ·  view source on GitHub ↗

Update Exponential Moving Average. Should only call this method in train program.

(self)

Source from the content-addressed store, hash-verified

4052 return param_ema
4053
4054 def update(self):
4055 """
4056 Update Exponential Moving Average. Should only call this method in
4057 train program.
4058 """
4059 global_step = paddle.optimizer.lr.autoincreased_step_counter(
4060 counter_name=self._step_counter_name
4061 )
4062 param_master_emas = []
4063 for param, tmp in self._params_tmps:
4064 with (
4065 param.block.program._optimized_guard([param, tmp]),
4066 name_scope('moving_average'),
4067 ):
4068 param_ema = self._ema_vars[param.name]
4069 if param.name + '.master' in self._ema_vars:
4070 master_ema = self._ema_vars[param.name + '.master']
4071 param_master_emas.append([param_ema, master_ema])
4072 else:
4073 ema_t = param_ema * self._decay_var + param * (
4074 1 - self._decay_var
4075 )
4076 paddle.assign(ema_t, output=param_ema)
4077
4078 # for fp16 params
4079 for param_ema, master_ema in param_master_emas:
4080 default_main_program().global_block().append_op(
4081 type="cast",
4082 inputs={"X": master_ema},
4083 outputs={"Out": param_ema},
4084 attrs={
4085 "in_dtype": master_ema.dtype,
4086 "out_dtype": param_ema.dtype,
4087 },
4088 )
4089
4090 @signature_safe_contextmanager
4091 def apply(self, executor, need_restore=True):

Callers

nothing calls this directly

Calls 7

name_scopeFunction · 0.90
default_main_programFunction · 0.90
_optimized_guardMethod · 0.80
global_blockMethod · 0.80
appendMethod · 0.45
assignMethod · 0.45
append_opMethod · 0.45

Tested by

no test coverage detected