Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
b18178f1
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b18178f1
编写于
4月 14, 2020
作者:
D
dengkaipeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refine metric
上级
308447ba
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
9 deletion
+14
-9
hapi/metrics.py
hapi/metrics.py
+10
-6
hapi/model.py
hapi/model.py
+4
-3
未找到文件。
hapi/metrics.py
浏览文件 @
b18178f1
...
...
@@ -72,11 +72,15 @@ class Metric(object):
raise
NotImplementedError
(
"function 'name' not implemented in {}."
.
format
(
self
.
__class__
.
__name__
))
def
add_metric_op
(
self
,
pred
,
label
):
def
add_metric_op
(
self
,
*
args
):
"""
Add process op for metric in program
If :code:`add_metric_op` is defined, it will be called with outputs
of model and labels from data as parameter, all outputs and labels
will be concatenated and flatten to a list like follows:
[output1, output2, ..., label1, label2,...]
"""
return
pred
,
label
return
args
class
Accuracy
(
Metric
):
...
...
@@ -91,12 +95,12 @@ class Accuracy(Metric):
self
.
_init_name
(
name
)
self
.
reset
()
def
add_metric_op
(
self
,
pred
,
label
,
*
args
,
**
kwargs
):
pred
=
fluid
.
layers
.
argsort
(
pred
[
0
]
,
descending
=
True
)[
1
][:,
:
self
.
maxk
]
correct
=
pred
==
label
[
0
]
def
add_metric_op
(
self
,
pred
,
label
,
*
args
):
pred
=
fluid
.
layers
.
argsort
(
pred
,
descending
=
True
)[
1
][:,
:
self
.
maxk
]
correct
=
pred
==
label
return
correct
def
update
(
self
,
correct
,
*
args
,
**
kwargs
):
def
update
(
self
,
correct
,
*
args
):
accs
=
[]
for
i
,
k
in
enumerate
(
self
.
topk
):
num_corrects
=
correct
[:,
:
k
].
sum
()
...
...
hapi/model.py
浏览文件 @
b18178f1
...
...
@@ -473,7 +473,7 @@ class StaticGraphAdapter(object):
if
mode
!=
'test'
:
for
metric
in
self
.
model
.
_metrics
:
metrics
.
append
(
to_list
(
metric
.
add_metric_op
(
outputs
,
labels
)))
to_list
(
metric
.
add_metric_op
(
*
(
outputs
+
labels
)
)))
if
mode
==
'train'
and
self
.
model
.
_optimizer
:
self
.
_loss_endpoint
=
fluid
.
layers
.
sum
(
losses
)
...
...
@@ -593,7 +593,7 @@ class DynamicGraphAdapter(object):
metrics
=
[]
for
metric
in
self
.
model
.
_metrics
:
metric_outs
=
metric
.
add_metric_op
(
to_list
(
outputs
),
to_list
(
labels
))
*
(
to_list
(
outputs
)
+
to_list
(
labels
)
))
m
=
metric
.
update
(
*
[
to_numpy
(
m
)
for
m
in
to_list
(
metric_outs
)])
metrics
.
append
(
m
)
...
...
@@ -632,7 +632,8 @@ class DynamicGraphAdapter(object):
self
.
_merge_count
[
self
.
mode
+
'_total'
]
+=
samples
self
.
_merge_count
[
self
.
mode
+
'_batch'
]
=
samples
metric_outs
=
metric
.
add_metric_op
(
to_list
(
outputs
),
labels
)
metric_outs
=
metric
.
add_metric_op
(
*
(
to_list
(
outputs
)
+
to_list
(
labels
)))
m
=
metric
.
update
(
*
[
to_numpy
(
m
)
for
m
in
to_list
(
metric_outs
)])
metrics
.
append
(
m
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录