diff --git a/python/paddle/fluid/framework.py b/python/paddle/fluid/framework.py index 2e23ddc9be45868218b0c751a226e492ddc5ae39..2ca8c320842a1d8dce04d190bb200f3d49c78154 100644 --- a/python/paddle/fluid/framework.py +++ b/python/paddle/fluid/framework.py @@ -747,13 +747,8 @@ class Block(object): if not self.has_var(name): raise ValueError("var %s is not in current" % name) v = self.var(name) - stop_gradient = None - trainable = None - optimize_attr = None - regularizer = None - gradient_clip_attr = None - error_clip = None if type(v) == Parameter: + var_type = "Parameter" stop_gradient = v.stop_gradient trainable = v.trainable optimize_attr = v.optimize_attr @@ -761,15 +756,16 @@ class Block(object): gradient_clip_attr = v.gradient_clip_attr error_clip = v.error_clip elif type(v) == Variable: + var_type = "Variable" error_clip = v.error_clip stop_gradient = v.stop_gradient else: raise ValueError("unsupported var type: %s", type(v)) self.desc.rename_var(name, new_name) + # NOTE: v is destroyed by C++ after calling rename_var. d = self.desc.find_var(new_name) - var = None - if type(v) == Parameter: + if var_type == "Parameter": var = Parameter( self, d.shape(), @@ -781,7 +777,7 @@ class Block(object): regularizer=regularizer, gradient_clip_attr=gradient_clip_attr, error_clip=error_clip) - elif type(v) == Variable: + elif var_type == "Variable": var = Variable( self, type=v.type,