diff --git a/python/paddle/fluid/framework.py b/python/paddle/fluid/framework.py index 4692f20c1bbd410ea4461223cb8cba0b03c833eb..195245a12f9d6af78986ee2984e0b5caa2927e99 100644 --- a/python/paddle/fluid/framework.py +++ b/python/paddle/fluid/framework.py @@ -442,11 +442,16 @@ class Variable(object): @property def _stop_gradient(self): - return self._ivar.stop_gradient + if _in_imperative_mode(): + return self._ivar.stop_gradient + else: + return self.stop_gradient @_stop_gradient.setter def _stop_gradient(self, s): - self._ivar.stop_gradient = s + if _in_imperative_mode(): + self._ivar.stop_gradient = s + self.stop_gradient = s @property def persistable(self): diff --git a/python/paddle/fluid/imperative/nn.py b/python/paddle/fluid/imperative/nn.py index 543f57389003fd969b0504fd5175a1b44f9db06d..dc90603c3716bef347a5212a3c6fb66522e49c14 100644 --- a/python/paddle/fluid/imperative/nn.py +++ b/python/paddle/fluid/imperative/nn.py @@ -333,7 +333,6 @@ class BatchNorm(layers.Layer): dtype=self._dtype, default_initializer=Constant(1.0)) if use_global_stats and self._helper.param_attr.learning_rate == 0.: - self._scale.stop_gradient = True self._scale._stop_gradient = True self._bias = self._helper.create_parameter( @@ -342,7 +341,6 @@ class BatchNorm(layers.Layer): dtype=self._dtype, is_bias=True) if use_global_stats and self._helper.bias_attr.learning_rate == 0.: - self._bias.stop_gradient = True self._bias._stop_gradient = True self._mean = self._helper.create_parameter( @@ -353,7 +351,6 @@ class BatchNorm(layers.Layer): do_model_average=do_model_average_for_mean_and_var), shape=param_shape, dtype=self._dtype) - self._mean.stop_gradient = True self._mean._stop_gradient = True self._variance = self._helper.create_parameter( @@ -364,7 +361,6 @@ class BatchNorm(layers.Layer): do_model_average=do_model_average_for_mean_and_var), shape=param_shape, dtype=self._dtype) - self._variance.stop_gradient = True self._variance._stop_gradient = True self._in_place = in_place