Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
PaddleRec
提交
7ea92706
P
PaddleRec
项目概览
BaiXuePrincess
/
PaddleRec
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleRec
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleRec
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
7ea92706
编写于
4月 14, 2020
作者:
T
tangwei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
user define trainer
上级
8b73e3a0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
4 deletion
+61
-4
fleetrec/examples/user_define_trainer.py
fleetrec/examples/user_define_trainer.py
+60
-3
fleetrec/trainer/factory.py
fleetrec/trainer/factory.py
+1
-1
未找到文件。
fleetrec/examples/user_define_trainer.py
浏览文件 @
7ea92706
from
fleetrec.trainer.trainer
import
Trainer
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
paddle.fluid
as
fluid
class
UserDefineTrainer
(
Trainer
):
from
fleetrec.trainer.transpiler_trainer
import
TranspileTrainer
from
fleetrec.utils
import
envs
class
UserDefineTrainer
(
TranspileTrainer
):
def
__init__
(
self
,
config
=
None
):
def
__init__
(
self
,
config
=
None
):
Trainer
.
__init__
(
self
,
config
)
TranspileTrainer
.
__init__
(
self
,
config
)
def
processor_register
(
self
):
self
.
regist_context_processor
(
'uninit'
,
self
.
instance
)
self
.
regist_context_processor
(
'init_pass'
,
self
.
init
)
self
.
regist_context_processor
(
'train_pass'
,
self
.
train
)
def
init
(
self
,
context
):
self
.
model
.
input
()
self
.
model
.
net
()
self
.
model
.
metrics
()
self
.
model
.
avg_loss
()
optimizer
=
self
.
model
.
optimizer
()
optimizer
.
minimize
(
self
.
model
.
_cost
)
self
.
fetch_vars
=
[]
self
.
fetch_alias
=
[]
self
.
fetch_period
=
self
.
model
.
get_fetch_period
()
metrics
=
self
.
model
.
get_metrics
()
if
metrics
:
self
.
fetch_vars
=
metrics
.
values
()
self
.
fetch_alias
=
metrics
.
keys
()
context
[
'status'
]
=
'train_pass'
def
train
(
self
,
context
):
# run startup program at once
self
.
_exe
.
run
(
fluid
.
default_startup_program
())
dataset
=
self
.
_get_dataset
()
epochs
=
envs
.
get_global_env
(
"train.epochs"
)
for
i
in
range
(
epochs
):
self
.
_exe
.
train_from_dataset
(
program
=
fluid
.
default_main_program
(),
dataset
=
dataset
,
fetch_list
=
self
.
fetch_vars
,
fetch_info
=
self
.
fetch_alias
,
print_period
=
self
.
fetch_period
)
context
[
'is_exit'
]
=
True
fleetrec/trainer/factory.py
浏览文件 @
7ea92706
...
@@ -42,7 +42,7 @@ class TrainerFactory(object):
...
@@ -42,7 +42,7 @@ class TrainerFactory(object):
elif
train_mode
==
"CtrTrainer"
:
elif
train_mode
==
"CtrTrainer"
:
trainer
=
CtrPaddleTrainer
(
config
)
trainer
=
CtrPaddleTrainer
(
config
)
elif
train_mode
==
"UserDefineTrainer"
:
elif
train_mode
==
"UserDefineTrainer"
:
train_location
=
envs
.
get_global_env
(
"train.
trainer.
location"
)
train_location
=
envs
.
get_global_env
(
"train.location"
)
train_dirname
=
os
.
path
.
dirname
(
train_location
)
train_dirname
=
os
.
path
.
dirname
(
train_location
)
base_name
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
train_location
))[
0
]
base_name
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
train_location
))[
0
]
sys
.
path
.
append
(
train_dirname
)
sys
.
path
.
append
(
train_dirname
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录