Unverified Commit 0817f7f5 authored by Yiwen Song's avatar Yiwen Song Committed by GitHub
Browse files

[references/classification] Adding gradient clipping (#4824)

* [references] Adding gradient clipping

* ufmt formatting

* remove apex code

* resolve naming issue
parent c5fb79f8
...@@ -42,6 +42,10 @@ def train_one_epoch(model, criterion, optimizer, data_loader, device, epoch, arg ...@@ -42,6 +42,10 @@ def train_one_epoch(model, criterion, optimizer, data_loader, device, epoch, arg
else: else:
loss = criterion(output, target) loss = criterion(output, target)
loss.backward() loss.backward()
if args.clip_grad_norm is not None:
nn.utils.clip_grad_norm_(utils.get_optimizer_params(optimizer), args.clip_grad_norm)
optimizer.step() optimizer.step()
if model_ema and i % args.model_ema_steps == 0: if model_ema and i % args.model_ema_steps == 0:
...@@ -472,6 +476,7 @@ def get_args_parser(add_help=True): ...@@ -472,6 +476,7 @@ def get_args_parser(add_help=True):
parser.add_argument( parser.add_argument(
"--train-crop-size", default=224, type=int, help="the random crop size used for training (default: 224)" "--train-crop-size", default=224, type=int, help="the random crop size used for training (default: 224)"
) )
parser.add_argument("--clip-grad-norm", default=None, type=float, help="the maximum gradient norm (default None)")
# Prototype models only # Prototype models only
parser.add_argument("--weights", default=None, type=str, help="the weights enum name to load") parser.add_argument("--weights", default=None, type=str, help="the weights enum name to load")
......
...@@ -409,3 +409,11 @@ def reduce_across_processes(val): ...@@ -409,3 +409,11 @@ def reduce_across_processes(val):
dist.barrier() dist.barrier()
dist.all_reduce(t) dist.all_reduce(t)
return t return t
def get_optimizer_params(optimizer):
"""Generator to iterate over all parameters in the optimizer param_groups."""
for group in optimizer.param_groups:
for p in group["params"]:
yield p
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment