Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion python/paddle/optimizer/adam.py
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ def step(self):
"""
params_grads = []
for param in self._parameter_list:
if not param.trainable:
if param.stop_gradient:
continue
if param._grad_ivar() is not None:
grad_var = param._grad_ivar()
Expand Down
2 changes: 1 addition & 1 deletion python/paddle/optimizer/adamax.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ def _finish_update(self, block, parameters_and_grads):
"""
assert isinstance(block, framework.Block)
for param, grad in parameters_and_grads:
if grad is None or param.trainable is False:
if grad is None or param.stop_gradient is True:
continue
with param.block.program._optimized_guard(
[param, grad]), name_scope('adamax'):
Expand Down
19 changes: 10 additions & 9 deletions python/paddle/optimizer/optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ def _get_accumulator(self, name, param):

def _update_param_device_map(self, parameters_and_grads, target_block):
for param_and_grad in parameters_and_grads:
if param_and_grad[0].trainable is True:
if param_and_grad[0].stop_gradient is False:
param_name = param_and_grad[0].name
ops = target_block.ops
device_attr_name = core.op_proto_and_checker_maker.kOpDeviceAttrName(
Expand Down Expand Up @@ -598,22 +598,22 @@ def _create_optimization_pass(self, parameters_and_grads):
self._update_param_device_map(parameters_and_grads, target_block)
self._create_accumulators(
target_block,
[p[0] for p in parameters_and_grads if p[0].trainable])
[p[0] for p in parameters_and_grads if not p[0].stop_gradient])
self._create_global_learning_rate()

if framework.in_dygraph_mode():
for param_and_grad in parameters_and_grads:
if param_and_grad[1] is None:
continue
if param_and_grad[0].trainable is True:
if param_and_grad[0].stop_gradient is False:
self._append_optimize_op(target_block, param_and_grad)
else:
for param_and_grad in parameters_and_grads:
if param_and_grad[1] is None:
continue
with param_and_grad[0].block.program._optimized_guard(
param_and_grad), name_scope("optimizer"):
if param_and_grad[0].trainable is True:
if param_and_grad[0].stop_gradient is False:
device = self._get_device_for_param(param_and_grad[0]
.name)
with device_guard(device):
Expand Down Expand Up @@ -689,7 +689,7 @@ def backward(self,

params_grads = []
for param in parameter_list:
if not param.trainable:
if param.stop_gradient:
continue
if param._grad_ivar() is not None:
# create gradient tensor
Expand Down Expand Up @@ -789,8 +789,9 @@ def _apply_optimize(self, loss, startup_program, params_grads):
def _get_no_grad_set(self, loss, no_grad_set=None):
no_grad_set = _get_no_grad_set_name(no_grad_set)
parameters = loss.block.program.global_block().all_parameters()
param_no_trainable = set(
[param.name for param in parameters if param.trainable is False])
param_no_trainable = set([
param.name for param in parameters if param.stop_gradient is True
])
# If the parameter is no trainable, it should not have a gradient.
no_grad_set.update(param_no_trainable)

Expand Down Expand Up @@ -825,7 +826,7 @@ def clear_grad(self):

"""
for p in self._parameter_list:
if p.trainable:
if not p.stop_gradient:
p.clear_gradient()

@imperative_base.no_grad
Expand Down Expand Up @@ -920,7 +921,7 @@ def step(self):
"""
params_grads = []
for param in self._parameter_list:
if not param.trainable:
if param.stop_gradient:
continue
if param._grad_ivar() is not None:
grad_var = param._grad_ivar()
Expand Down