Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
fcae408a
H
hapi
项目概览
PaddlePaddle
/
hapi
通知
11
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hapi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fcae408a
编写于
12月 31, 2019
作者:
Y
Yang Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support weighted losses
上级
90a90cf9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
5 deletion
+16
-5
model.py
model.py
+16
-5
未找到文件。
model.py
浏览文件 @
fcae408a
...
@@ -168,14 +168,18 @@ class StaticGraphAdapter(object):
...
@@ -168,14 +168,18 @@ class StaticGraphAdapter(object):
label_vars
=
[]
label_vars
=
[]
if
self
.
mode
!=
'test'
:
if
self
.
mode
!=
'test'
:
losses
=
[]
losses
=
[]
for
o
,
l
in
zip
(
outputs
,
self
.
model
.
_loss_functions
):
loss_weights
=
self
.
model
.
_loss_weights
if
loss_weights
is
None
:
loss_weights
=
[
1.
for
_
in
self
.
model
.
_loss_functions
]
for
o
,
l
,
w
in
zip
(
outputs
,
self
.
model
.
_loss_functions
,
loss_weights
):
if
l
is
None
:
if
l
is
None
:
continue
continue
label_var
=
self
.
_infer_label_var
(
o
,
l
)
label_var
=
self
.
_infer_label_var
(
o
,
l
)
label_vars
.
append
(
label_var
)
label_vars
.
append
(
label_var
)
loss_fn
=
getattr
(
fluid
.
layers
,
l
)
loss_fn
=
getattr
(
fluid
.
layers
,
l
)
loss
=
loss_fn
(
o
,
label_var
)
loss
=
loss_fn
(
o
,
label_var
)
losses
.
append
(
fluid
.
layers
.
reduce_mean
(
loss
))
losses
.
append
(
fluid
.
layers
.
reduce_mean
(
loss
)
*
w
)
outputs
=
losses
outputs
=
losses
if
self
.
mode
==
'train'
:
if
self
.
mode
==
'train'
:
self
.
_label_vars
=
label_vars
self
.
_label_vars
=
label_vars
...
@@ -314,12 +318,16 @@ class DynamicGraphAdapter(object):
...
@@ -314,12 +318,16 @@ class DynamicGraphAdapter(object):
def
_loss
(
self
,
pred
,
labels
):
def
_loss
(
self
,
pred
,
labels
):
losses
=
[]
losses
=
[]
for
o
,
l
,
t
in
zip
(
to_list
(
pred
),
self
.
model
.
_loss_functions
,
labels
):
loss_weights
=
self
.
model
.
_loss_weights
if
loss_weights
is
None
:
loss_weights
=
[
1.
for
_
in
self
.
model
.
_loss_functions
]
for
o
,
l
,
w
,
t
in
zip
(
to_list
(
pred
),
self
.
model
.
_loss_functions
,
loss_weights
,
labels
):
if
l
is
None
:
if
l
is
None
:
continue
continue
loss_fn
=
getattr
(
fluid
.
layers
,
l
)
loss_fn
=
getattr
(
fluid
.
layers
,
l
)
loss
=
loss_fn
(
o
,
to_variable
(
t
))
loss
=
loss_fn
(
o
,
to_variable
(
t
))
losses
.
append
(
fluid
.
layers
.
reduce_mean
(
loss
))
losses
.
append
(
fluid
.
layers
.
reduce_mean
(
loss
)
*
w
)
return
losses
return
losses
...
@@ -328,6 +336,7 @@ class Model(fluid.dygraph.Layer):
...
@@ -328,6 +336,7 @@ class Model(fluid.dygraph.Layer):
super
(
Model
,
self
).
__init__
(
self
.
__class__
.
__name__
)
super
(
Model
,
self
).
__init__
(
self
.
__class__
.
__name__
)
self
.
mode
=
'train'
self
.
mode
=
'train'
self
.
_loss_functions
=
[]
self
.
_loss_functions
=
[]
self
.
_loss_weights
=
None
self
.
_optimizer
=
None
self
.
_optimizer
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
self
.
_adapter
=
DynamicGraphAdapter
(
self
)
self
.
_adapter
=
DynamicGraphAdapter
(
self
)
...
@@ -349,9 +358,11 @@ class Model(fluid.dygraph.Layer):
...
@@ -349,9 +358,11 @@ class Model(fluid.dygraph.Layer):
def
load
(
self
,
*
args
,
**
kwargs
):
def
load
(
self
,
*
args
,
**
kwargs
):
return
self
.
_adapter
.
load
(
*
args
,
**
kwargs
)
return
self
.
_adapter
.
load
(
*
args
,
**
kwargs
)
def
prepare
(
self
,
optimizer
,
loss_functions
):
def
prepare
(
self
,
optimizer
,
loss_functions
,
loss_weights
=
None
):
self
.
_optimizer
=
optimizer
self
.
_optimizer
=
optimizer
self
.
_loss_functions
=
to_list
(
loss_functions
)
self
.
_loss_functions
=
to_list
(
loss_functions
)
if
loss_weights
is
not
None
:
self
.
_loss_weights
=
to_list
(
loss_weights
)
def
parameters
(
self
,
*
args
,
**
kwargs
):
def
parameters
(
self
,
*
args
,
**
kwargs
):
return
self
.
_adapter
.
parameters
(
*
args
,
**
kwargs
)
return
self
.
_adapter
.
parameters
(
*
args
,
**
kwargs
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录