Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PALM
提交
eef09152
P
PALM
项目概览
PaddlePaddle
/
PALM
通知
8
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PALM
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
eef09152
编写于
11月 24, 2019
作者:
X
xixiaoyao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add saving infermodel with num steps
上级
40283138
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
42 addition
and
28 deletion
+42
-28
paddlepalm/mtl_controller.py
paddlepalm/mtl_controller.py
+8
-15
paddlepalm/task_instance.py
paddlepalm/task_instance.py
+34
-13
未找到文件。
paddlepalm/mtl_controller.py
浏览文件 @
eef09152
...
...
@@ -304,19 +304,6 @@ class Controller(object):
instances
[
i
].
task_reuse_scope
=
instances
[
j
].
name
break
# parse Reader and Paradigm for each instance
for
inst
in
instances
:
reader_name
=
inst
.
config
[
'reader'
]
reader_mod
=
importlib
.
import_module
(
READER_DIR
+
'.'
+
reader_name
)
Reader
=
getattr
(
reader_mod
,
'Reader'
)
parad_name
=
inst
.
config
[
'paradigm'
]
parad_mod
=
importlib
.
import_module
(
PARADIGM_DIR
+
'.'
+
parad_name
)
Paradigm
=
getattr
(
parad_mod
,
'TaskParadigm'
)
inst
.
Reader
=
Reader
inst
.
Paradigm
=
Paradigm
self
.
instances
=
instances
self
.
mrs
=
mrs
self
.
Backbone
=
Backbone
...
...
@@ -605,6 +592,9 @@ class Controller(object):
global_step
+=
1
cur_task
.
cur_train_step
+=
1
if
cur_task
.
save_infermodel_every_n_steps
>
0
and
cur_task
.
cur_train_step
%
cur_task
.
save_infermodel_every_n_steps
==
0
:
cur_task
.
save
(
suffix
=
'-step'
+
str
(
cur_task
.
cur_train_step
))
if
global_step
%
main_conf
.
get
(
'print_every_n_steps'
,
5
)
==
0
:
loss
=
rt_outputs
[
cur_task
.
name
+
'/loss'
]
loss
=
np
.
mean
(
np
.
squeeze
(
loss
)).
tolist
()
...
...
@@ -635,8 +625,11 @@ class Controller(object):
assert
isinstance
(
task_instance
,
str
)
if
isinstance
(
inference_model_dir
,
str
):
assert
os
.
path
.
exists
(
inference_model_dir
),
inference_model_dir
+
" not found."
if
not
self
.
has_init_pred
and
inference_model_dir
is
None
:
raise
ValueError
(
'infer_model_path is required for prediction.'
)
# if not self.has_init_pred and inference_model_dir is None:
# raise ValueError('infer_model_path is required for prediction.')
if
inference_model_dir
is
None
:
assert
'save_path'
in
self
.
mtl_conf
,
"one of the `inference_model_dir` and 'save_path' should be set to load inference model."
inference_model_dir
=
os
.
path
.
join
(
self
.
mtl_conf
[
'save_path'
],
task_instance
,
'infer_model'
)
instance
=
None
for
inst
in
self
.
instances
:
...
...
paddlepalm/task_instance.py
浏览文件 @
eef09152
...
...
@@ -19,13 +19,34 @@ import os
import
json
from
paddle
import
fluid
def
check_req_args
(
conf
,
name
):
assert
'reader'
in
conf
,
name
+
': reader is required to build TaskInstance.'
assert
'paradigm'
in
conf
,
name
+
': paradigm is required to build TaskInstance.'
assert
'train_file'
in
conf
or
'pred_file'
in
conf
,
name
+
': at least train_file or pred_file should be provided to build TaskInstance.'
class
TaskInstance
(
object
):
def
__init__
(
self
,
name
,
id
,
config
=
{}
,
verbose
=
True
):
def
__init__
(
self
,
name
,
id
,
config
,
verbose
=
True
):
self
.
_name
=
name
self
.
_config
=
config
self
.
_verbose
=
verbose
check_req_args
(
config
)
# parse Reader and Paradigm
reader_name
=
config
[
'reader'
]
reader_mod
=
importlib
.
import_module
(
READER_DIR
+
'.'
+
reader_name
)
Reader
=
getattr
(
reader_mod
,
'Reader'
)
parad_name
=
config
[
'paradigm'
]
parad_mod
=
importlib
.
import_module
(
PARADIGM_DIR
+
'.'
+
parad_name
)
Paradigm
=
getattr
(
parad_mod
,
'TaskParadigm'
)
self
.
_Reader
=
Reader
self
.
_Paradigm
=
Paradigm
self
.
_save_infermodel_path
=
os
.
path
.
join
(
self
.
_config
[
'save_path'
],
self
.
_name
,
'infer_model'
)
self
.
_save_ckpt_path
=
os
.
path
.
join
(
self
.
_config
[
'save_path'
],
'ckpt'
)
...
...
@@ -116,23 +137,23 @@ class TaskInstance(object):
def
Reader
(
self
):
return
self
.
_Reader
@
Reader
.
setter
def
Reader
(
self
,
cls
):
assert
base_reader
.
__name__
==
cls
.
__bases__
[
-
1
].
__name__
,
\
"expect: {}, receive: {}."
.
format
(
base_reader
.
__name__
,
\
cls
.
__bases__
[
-
1
].
__name__
)
self
.
_Reader
=
cls
#
@Reader.setter
#
def Reader(self, cls):
#
assert base_reader.__name__ == cls.__bases__[-1].__name__, \
#
"expect: {}, receive: {}.".format(base_reader.__name__, \
#
cls.__bases__[-1].__name__)
#
self._Reader = cls
@
property
def
Paradigm
(
self
):
return
self
.
_Paradigm
@
Paradigm
.
setter
def
Paradigm
(
self
,
cls
):
assert
base_paradigm
.
__name__
==
cls
.
__bases__
[
-
1
].
__name__
,
\
"expect: {}, receive: {}."
.
format
(
base_paradigm
.
__name__
,
\
cls
.
__bases__
[
-
1
].
__name__
)
self
.
_Paradigm
=
cls
#
@Paradigm.setter
#
def Paradigm(self, cls):
#
assert base_paradigm.__name__ == cls.__bases__[-1].__name__, \
#
"expect: {}, receive: {}.".format(base_paradigm.__name__, \
#
cls.__bases__[-1].__name__)
#
self._Paradigm = cls
@
property
def
config
(
self
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录