Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
apex
Commits
85b17833
Unverified
Commit
85b17833
authored
Aug 06, 2020
by
ngimel
Committed by
GitHub
Aug 06, 2020
Browse files
sgd supports zero-grad (#926)
parent
274cc063
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
1 deletion
+11
-1
apex/optimizers/fused_sgd.py
apex/optimizers/fused_sgd.py
+11
-1
No files found.
apex/optimizers/fused_sgd.py
View file @
85b17833
...
@@ -76,7 +76,8 @@ class FusedSGD(Optimizer):
...
@@ -76,7 +76,8 @@ class FusedSGD(Optimizer):
def
__init__
(
self
,
params
,
lr
=
required
,
momentum
=
0
,
dampening
=
0
,
def
__init__
(
self
,
params
,
lr
=
required
,
momentum
=
0
,
dampening
=
0
,
weight_decay
=
0
,
nesterov
=
False
,
weight_decay
=
0
,
nesterov
=
False
,
wd_after_momentum
=
False
,
wd_after_momentum
=
False
,
materialize_master_grads
=
True
):
materialize_master_grads
=
True
,
set_grad_none
=
False
):
if
lr
is
not
required
and
lr
<
0.0
:
if
lr
is
not
required
and
lr
<
0.0
:
raise
ValueError
(
"Invalid learning rate: {}"
.
format
(
lr
))
raise
ValueError
(
"Invalid learning rate: {}"
.
format
(
lr
))
if
momentum
<
0.0
:
if
momentum
<
0.0
:
...
@@ -94,6 +95,7 @@ class FusedSGD(Optimizer):
...
@@ -94,6 +95,7 @@ class FusedSGD(Optimizer):
self
.
materialize_master_grads
=
materialize_master_grads
self
.
materialize_master_grads
=
materialize_master_grads
self
.
most_recent_scale
=
1.0
self
.
most_recent_scale
=
1.0
self
.
scale_set_by_backward
=
False
self
.
scale_set_by_backward
=
False
self
.
set_grad_none
=
set_grad_none
if
multi_tensor_applier
.
available
:
if
multi_tensor_applier
.
available
:
import
amp_C
import
amp_C
...
@@ -108,6 +110,14 @@ class FusedSGD(Optimizer):
...
@@ -108,6 +110,14 @@ class FusedSGD(Optimizer):
for
group
in
self
.
param_groups
:
for
group
in
self
.
param_groups
:
group
.
setdefault
(
'nesterov'
,
False
)
group
.
setdefault
(
'nesterov'
,
False
)
def
zero_grad
(
self
):
if
self
.
set_grad_none
:
for
group
in
self
.
param_groups
:
for
p
in
group
[
'params'
]:
p
.
grad
=
None
else
:
super
(
FusedSGD
,
self
).
zero_grad
()
def
get_momentums
(
self
,
params
):
def
get_momentums
(
self
,
params
):
momentums
=
[]
momentums
=
[]
first_run
=
True
first_run
=
True
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment