Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
s920243400
PaddleDetection
提交
e62c6874
P
PaddleDetection
项目概览
s920243400
/
PaddleDetection
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleDetection
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e62c6874
编写于
1月 10, 2022
作者:
W
Wenyu
提交者:
GitHub
1月 10, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ema update (#5089)
上级
d94481c2
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
15 addition
and
2 deletion
+15
-2
ppdet/optimizer.py
ppdet/optimizer.py
+15
-2
未找到文件。
ppdet/optimizer.py
浏览文件 @
e62c6874
...
@@ -17,6 +17,7 @@ from __future__ import division
...
@@ -17,6 +17,7 @@ from __future__ import division
from
__future__
import
print_function
from
__future__
import
print_function
import
math
import
math
import
weakref
import
paddle
import
paddle
import
paddle.nn
as
nn
import
paddle.nn
as
nn
...
@@ -319,19 +320,31 @@ class ModelEMA(object):
...
@@ -319,19 +320,31 @@ class ModelEMA(object):
self
.
use_thres_step
=
use_thres_step
self
.
use_thres_step
=
use_thres_step
self
.
cycle_epoch
=
cycle_epoch
self
.
cycle_epoch
=
cycle_epoch
self
.
_model_state
=
{
k
:
weakref
.
ref
(
p
)
for
k
,
p
in
model
.
state_dict
().
items
()
}
def
reset
(
self
):
def
reset
(
self
):
self
.
step
=
0
self
.
step
=
0
self
.
epoch
=
0
self
.
epoch
=
0
for
k
,
v
in
self
.
state_dict
.
items
():
for
k
,
v
in
self
.
state_dict
.
items
():
self
.
state_dict
[
k
]
=
paddle
.
zeros_like
(
v
)
self
.
state_dict
[
k
]
=
paddle
.
zeros_like
(
v
)
def
update
(
self
,
model
):
def
update
(
self
,
model
=
None
):
if
self
.
use_thres_step
:
if
self
.
use_thres_step
:
decay
=
min
(
self
.
decay
,
(
1
+
self
.
step
)
/
(
10
+
self
.
step
))
decay
=
min
(
self
.
decay
,
(
1
+
self
.
step
)
/
(
10
+
self
.
step
))
else
:
else
:
decay
=
self
.
decay
decay
=
self
.
decay
self
.
_decay
=
decay
self
.
_decay
=
decay
if
model
is
not
None
:
model_dict
=
model
.
state_dict
()
model_dict
=
model
.
state_dict
()
else
:
model_dict
=
{
k
:
p
()
for
k
,
p
in
self
.
_model_state
.
items
()}
assert
all
(
[
v
is
not
None
for
_
,
v
in
model_dict
.
items
()]),
'python gc.'
for
k
,
v
in
self
.
state_dict
.
items
():
for
k
,
v
in
self
.
state_dict
.
items
():
v
=
decay
*
v
+
(
1
-
decay
)
*
model_dict
[
k
]
v
=
decay
*
v
+
(
1
-
decay
)
*
model_dict
[
k
]
v
.
stop_gradient
=
True
v
.
stop_gradient
=
True
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录