Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
4e9c403e
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,发现更多精彩内容 >>
提交
4e9c403e
编写于
1月 07, 2020
作者:
Y
Yang Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix weight loading
上级
50d2a350
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
16 deletion
+24
-16
model.py
model.py
+24
-16
未找到文件。
model.py
浏览文件 @
4e9c403e
...
...
@@ -114,7 +114,6 @@ class StaticGraphAdapter(object):
# so we need to keep track of the parameters already created
self
.
_startup_prog
=
fluid
.
default_startup_program
()
self
.
_orig_prog
=
fluid
.
default_main_program
()
self
.
_lazy_load_path
=
None
self
.
_label_vars
=
{}
# label variables
self
.
_endpoints
=
{}
...
...
@@ -183,12 +182,6 @@ class StaticGraphAdapter(object):
_save
(
optim
,
optim_path
)
def
load
(
self
,
path
):
if
self
.
_executor
is
None
:
self
.
_lazy_load_path
=
path
else
:
self
.
_do_load
(
path
)
def
_do_load
(
self
,
path
):
def
_load
(
path
):
if
not
os
.
path
.
exists
(
path
):
return
...
...
@@ -210,13 +203,22 @@ class StaticGraphAdapter(object):
t
.
set
(
ndarray
,
place
)
param_path
=
path
+
".pdparams"
params
=
_load
(
param_path
)
assert
params
,
"failed to load parameters, please check path"
param_state
=
_load
(
param_path
)
assert
param_state
,
"failed to load parameters, please check path"
if
self
.
_executor
is
None
:
executor
=
fluid
.
Executor
(
fluid
.
CPUPlace
()).
_default_executor
else
:
executor
=
self
.
_executor
.
_default_executor
fluid
.
core
.
_create_loaded_parameter
(
list
(
self
.
model
.
state_dict
().
values
()),
global_scope
(),
executor
)
for
key
,
var
in
self
.
model
.
state_dict
().
items
():
assert
key
in
param
s
,
\
assert
key
in
param
_state
,
\
"parameter [{}] is not found in model file [{}]"
.
format
(
key
,
param_path
)
set_var
(
var
,
param
s
[
key
])
set_var
(
var
,
param
_state
[
key
])
# FIXME what if a different optimizer is used?
if
not
self
.
model
.
_optimizer
:
...
...
@@ -234,7 +236,7 @@ class StaticGraphAdapter(object):
"optimizer saved in dygraph mode is not usable in static graph"
fluid
.
core
.
_create_loaded_parameter
(
optim
,
global_scope
(),
self
.
_executor
.
_default_
executor
)
optim
,
global_scope
(),
executor
)
for
var
in
optim
:
assert
var
.
name
in
optim_state
,
\
...
...
@@ -334,10 +336,16 @@ class StaticGraphAdapter(object):
# therefore startup program only needs to run once
if
self
.
_executor
is
None
:
self
.
_executor
=
fluid
.
Executor
(
places
[
0
])
self
.
_executor
.
run
(
self
.
_startup_prog
)
if
self
.
_lazy_load_path
is
not
None
:
self
.
_do_load
(
self
.
_lazy_load_path
)
self
.
_lazy_load_path
=
None
# XXX incremental initialization
uninitialized
=
[]
for
var_py
in
self
.
_startup_prog
.
list_vars
():
var
=
fluid
.
global_scope
().
find_var
(
var_py
.
name
)
if
var
and
var
.
get_tensor
().
_is_initialized
():
continue
uninitialized
.
append
(
var_py
)
if
uninitialized
:
startup_prog
=
self
.
_startup_prog
.
_prune
(
uninitialized
)
self
.
_executor
.
run
(
startup_prog
)
if
len
(
device_ids
)
<
2
:
return
prog
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录