Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
0218742b
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
1 年多 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
0218742b
编写于
4月 22, 2022
作者:
W
Walter
提交者:
GitHub
4月 22, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1868 from HydrogenSulfate/fix_optimizer_init
fix bug for static graph
上级
85db2a5c
0146af28
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
4 deletion
+12
-4
ppcls/engine/engine.py
ppcls/engine/engine.py
+1
-1
ppcls/optimizer/__init__.py
ppcls/optimizer/__init__.py
+11
-3
未找到文件。
ppcls/engine/engine.py
浏览文件 @
0218742b
...
...
@@ -224,7 +224,7 @@ class Engine(object):
# build optimizer
if
self
.
mode
==
'train'
:
self
.
optimizer
,
self
.
lr_sch
=
build_optimizer
(
self
.
config
,
self
.
config
[
"Global"
][
"epochs"
],
self
.
config
[
"Optimizer"
]
,
self
.
config
[
"Global"
][
"epochs"
],
len
(
self
.
train_dataloader
),
[
self
.
model
,
self
.
train_loss_func
])
...
...
ppcls/optimizer/__init__.py
浏览文件 @
0218742b
...
...
@@ -44,8 +44,7 @@ def build_lr_scheduler(lr_config, epochs, step_each_epoch):
# model_list is None in static graph
def
build_optimizer
(
config
,
epochs
,
step_each_epoch
,
model_list
=
None
):
config
=
copy
.
deepcopy
(
config
)
optim_config
=
config
[
"Optimizer"
]
optim_config
=
copy
.
deepcopy
(
config
)
if
isinstance
(
optim_config
,
dict
):
# convert {'name': xxx, **optim_cfg} to [{name: {scope: xxx, **optim_cfg}}]
optim_name
=
optim_config
.
pop
(
"name"
)
...
...
@@ -93,6 +92,15 @@ def build_optimizer(config, epochs, step_each_epoch, model_list=None):
else
:
grad_clip
=
None
optim_model
=
[]
# for static graph
if
model_list
is
None
:
optim
=
getattr
(
optimizer
,
optim_name
)(
learning_rate
=
lr
,
grad_clip
=
grad_clip
,
**
optim_cfg
)(
model_list
=
optim_model
)
return
optim
,
lr
# for dynamic graph
for
i
in
range
(
len
(
model_list
)):
if
len
(
model_list
[
i
].
parameters
())
==
0
:
continue
...
...
@@ -103,7 +111,7 @@ def build_optimizer(config, epochs, step_each_epoch, model_list=None):
if
optim_scope
.
endswith
(
"Loss"
):
# optimizer for loss
for
m
in
model_list
[
i
].
sublayers
(
True
):
if
m
.
__class_
name
==
optim_scope
:
if
m
.
__class_
_
.
__name__
==
optim_scope
:
optim_model
.
append
(
m
)
else
:
# opmizer for module in model, such as backbone, neck, head...
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录