Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
4a59b171
X
X2Paddle
项目概览
PaddlePaddle
/
X2Paddle
大约 2 年 前同步成功
通知
330
Star
698
Fork
167
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
26
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
X2Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
26
Issue
26
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
4a59b171
编写于
1月 13, 2021
作者:
S
SunAhong1993
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix3
上级
3c4537f1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
20 addition
and
10 deletion
+20
-10
x2paddle/core/program.py
x2paddle/core/program.py
+8
-8
x2paddle/op_mapper/dygraph/pytorch2paddle/prim2code.py
x2paddle/op_mapper/dygraph/pytorch2paddle/prim2code.py
+4
-2
x2paddle/optimizer/fusion/dygraph/if_fuser.py
x2paddle/optimizer/fusion/dygraph/if_fuser.py
+8
-0
未找到文件。
x2paddle/core/program.py
浏览文件 @
4a59b171
...
@@ -285,14 +285,14 @@ class PaddleGraph(object):
...
@@ -285,14 +285,14 @@ class PaddleGraph(object):
hierarchical_tree
.
save_source_files
(
save_dir
)
hierarchical_tree
.
save_source_files
(
save_dir
)
self
.
dump_dygraph_parameter
(
save_dir
)
self
.
dump_dygraph_parameter
(
save_dir
)
else
:
else
:
if
self
.
source_type
==
"pytorch"
:
#
if self.source_type == "pytorch":
from
x2paddle.optimizer.pytorch_code_optimizer
import
ModuleGraph
#
from x2paddle.optimizer.pytorch_code_optimizer import ModuleGraph
module_graph
=
ModuleGraph
(
self
)
#
module_graph = ModuleGraph(self)
module_graph
.
save_source_files
(
save_dir
)
#
module_graph.save_source_files(save_dir)
self
.
dump_dygraph_parameter
(
save_dir
)
#
self.dump_dygraph_parameter(save_dir)
else
:
#
else:
self
.
gen_dygraph_code
(
save_dir
)
self
.
gen_dygraph_code
(
save_dir
)
self
.
dump_dygraph_parameter
(
save_dir
)
self
.
dump_dygraph_parameter
(
save_dir
)
# 动转静
# 动转静
code_path
=
osp
.
join
(
osp
.
abspath
(
save_dir
),
"x2paddle_code.py"
)
code_path
=
osp
.
join
(
osp
.
abspath
(
save_dir
),
"x2paddle_code.py"
)
print
(
"Exporting inference model from python code ('{}')...
\n
"
.
format
(
code_path
))
print
(
"Exporting inference model from python code ('{}')...
\n
"
.
format
(
code_path
))
...
...
x2paddle/op_mapper/dygraph/pytorch2paddle/prim2code.py
浏览文件 @
4a59b171
...
@@ -182,7 +182,7 @@ def prim_equal(layer, indent=1, init_func=[], forward_func=[], layer_id=None, di
...
@@ -182,7 +182,7 @@ def prim_equal(layer, indent=1, init_func=[], forward_func=[], layer_id=None, di
def
prim_exception
(
layer
,
indent
=
1
,
init_func
=
[],
forward_func
=
[],
layer_id
=
None
,
different_attrs
=
None
):
def
prim_exception
(
layer
,
indent
=
1
,
init_func
=
[],
forward_func
=
[],
layer_id
=
None
,
different_attrs
=
None
):
line
=
"raise
Raise
Exception({})"
.
format
(
get_value
(
layer
,
"input"
,
different_attrs
))
line
=
"raise Exception({})"
.
format
(
get_value
(
layer
,
"input"
,
different_attrs
))
forward_func
.
extend
(
gen_codes
([
line
],
indent
=
indent
))
forward_func
.
extend
(
gen_codes
([
line
],
indent
=
indent
))
...
@@ -458,10 +458,12 @@ def prim_slice(layer, indent=1, init_func=[], forward_func=[], layer_id=None, di
...
@@ -458,10 +458,12 @@ def prim_slice(layer, indent=1, init_func=[], forward_func=[], layer_id=None, di
forward_func
.
extend
(
gen_codes
([
line
],
indent
=
indent
))
forward_func
.
extend
(
gen_codes
([
line
],
indent
=
indent
))
def
prim_startswith
(
layer
,
indent
=
1
,
init_func
=
[],
forward_func
=
[],
layer_id
=
None
,
different_attrs
=
None
):
def
prim_startswith
(
layer
,
indent
=
1
,
init_func
=
[],
forward_func
=
[],
layer_id
=
None
,
different_attrs
=
None
,
is_return_line
=
False
):
line
=
"{} = {}.startswith({})"
.
format
(
layer
.
outputs
[
0
],
line
=
"{} = {}.startswith({})"
.
format
(
layer
.
outputs
[
0
],
get_value
(
layer
,
"input"
,
different_attrs
),
get_value
(
layer
,
"input"
,
different_attrs
),
get_value
(
layer
,
"start_str"
,
different_attrs
))
get_value
(
layer
,
"start_str"
,
different_attrs
))
if
is_return_line
:
return
line
.
split
(
" = "
)[
1
]
forward_func
.
extend
(
gen_codes
([
line
],
indent
=
indent
))
forward_func
.
extend
(
gen_codes
([
line
],
indent
=
indent
))
...
...
x2paddle/optimizer/fusion/dygraph/if_fuser.py
浏览文件 @
4a59b171
...
@@ -41,13 +41,21 @@ class DygraphIfFuser(FuseBase):
...
@@ -41,13 +41,21 @@ class DygraphIfFuser(FuseBase):
return
return
for
id
in
graph
.
edges_in
[
layer_id
]:
for
id
in
graph
.
edges_in
[
layer_id
]:
input_layer
=
graph
.
layers
[
id
]
input_layer
=
graph
.
layers
[
id
]
input_layer_id
=
id
if
input_layer
.
outputs
==
[
layer
.
inputs
[
"input"
]]:
if
input_layer
.
outputs
==
[
layer
.
inputs
[
"input"
]]:
if
input_layer
.
kernel
==
"prim.if"
:
if
input_layer
.
kernel
==
"prim.if"
:
matches
.
pop
(
layer_id
)
matches
.
pop
(
layer_id
)
return
return
input_id
=
id
input_id
=
id
break
break
if
list
(
layer
.
inputs
.
values
()).
count
(
input_layer
.
outputs
[
0
])
>
1
or
\
(
input_layer_id
in
graph
.
edges_out
and
len
(
graph
.
edges_out
[
input_layer_id
])
>
1
):
matches
.
pop
(
layer_id
)
return
func_name
=
input_layer
.
kernel
.
replace
(
"."
,
"_"
)
func_name
=
input_layer
.
kernel
.
replace
(
"."
,
"_"
)
if
func_name
in
[
"prim_if"
,
"prim_loop"
]:
matches
.
pop
(
layer_id
)
return
from
x2paddle.op_mapper.dygraph.pytorch2paddle
import
prim2code
from
x2paddle.op_mapper.dygraph.pytorch2paddle
import
prim2code
func
=
getattr
(
prim2code
,
func_name
)
func
=
getattr
(
prim2code
,
func_name
)
line
=
func
(
input_layer
,
is_return_line
=
True
)
line
=
func
(
input_layer
,
is_return_line
=
True
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录