Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
9f27c2cc
X
X2Paddle
项目概览
PaddlePaddle
/
X2Paddle
1 年多 前同步成功
通知
328
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看板
未验证
提交
9f27c2cc
编写于
12月 30, 2021
作者:
J
Jason
提交者:
GitHub
12月 30, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #722 from wjj19950828/fixed_for_convtranspose
fixed convtranspose bug
上级
a073d6e8
eb2eb0b8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
39 addition
and
13 deletion
+39
-13
docs/inference_model_convertor/demo/tensorflow2paddle.ipynb
docs/inference_model_convertor/demo/tensorflow2paddle.ipynb
+2
-2
x2paddle/core/program.py
x2paddle/core/program.py
+3
-3
x2paddle/decoder/onnx_decoder.py
x2paddle/decoder/onnx_decoder.py
+2
-1
x2paddle/op_mapper/onnx2paddle/opset9/opset.py
x2paddle/op_mapper/onnx2paddle/opset9/opset.py
+32
-7
未找到文件。
docs/inference_model_convertor/demo/tensorflow2paddle.ipynb
浏览文件 @
9f27c2cc
...
...
@@ -81,7 +81,7 @@
"source": [
"## 模型迁移\n",
"### 1. 获取MobileNetV1的FrozenModel\n",
"由于X2Paddle只支持TensorFlow中FrozenModel的转换,如果为纯checkpoint模型,需要参考参考X2Paddle官方[文档](https://github.com/PaddlePaddle/X2Paddle/blob/
develop
/docs/user_guides/export_tf_model.md),将其转换为FrozenModel,本示例中提供的模型为FrozenModel,所以无需转换。"
"由于X2Paddle只支持TensorFlow中FrozenModel的转换,如果为纯checkpoint模型,需要参考参考X2Paddle官方[文档](https://github.com/PaddlePaddle/X2Paddle/blob/
release-1.1
/docs/user_guides/export_tf_model.md),将其转换为FrozenModel,本示例中提供的模型为FrozenModel,所以无需转换。"
]
},
{
...
...
@@ -210,4 +210,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
}
}
\ No newline at end of file
x2paddle/core/program.py
浏览文件 @
9f27c2cc
...
...
@@ -532,9 +532,9 @@ class PaddleGraph(object):
paddle
.
save
(
self
.
parameters
,
save_path
)
def
dygraph2static
(
self
,
save_dir
,
input_shapes
=
[],
input_types
=
[]):
s
ep
c_list
=
list
()
s
pe
c_list
=
list
()
for
i
,
name
in
enumerate
(
self
.
inputs
):
s
ep
c_list
.
append
(
s
pe
c_list
.
append
(
paddle
.
static
.
InputSpec
(
shape
=
input_shapes
[
i
],
name
=
name
,
dtype
=
input_types
[
i
]))
path
=
osp
.
abspath
(
save_dir
)
...
...
@@ -548,7 +548,7 @@ class PaddleGraph(object):
else
:
model
.
set_dict
(
restore
)
model
.
eval
()
static_model
=
paddle
.
jit
.
to_static
(
model
,
input_spec
=
s
ep
c_list
)
static_model
=
paddle
.
jit
.
to_static
(
model
,
input_spec
=
s
pe
c_list
)
try
:
paddle
.
jit
.
save
(
static_model
,
osp
.
join
(
save_dir
,
"inference_model/model"
))
...
...
x2paddle/decoder/onnx_decoder.py
浏览文件 @
9f27c2cc
...
...
@@ -583,7 +583,8 @@ class ONNXDecoder(object):
item
.
name
=
self
.
make_variable_name
(
item
.
name
)
for
node
in
graph
.
node
:
node
.
name
=
node
.
output
[
0
]
if
":"
in
node
.
name
and
len
(
node
.
output
)
>
1
:
if
":"
in
node
.
name
and
len
(
node
.
output
)
>
1
and
node
.
op_type
!=
"LSTM"
:
node
.
name
=
node
.
name
.
split
(
':'
)[
0
]
node
.
name
=
self
.
make_variable_name
(
node
.
name
)
for
i
in
range
(
len
(
node
.
input
)):
...
...
x2paddle/op_mapper/onnx2paddle/opset9/opset.py
浏览文件 @
9f27c2cc
...
...
@@ -169,6 +169,8 @@ class OpSet9():
'Floor'
:
[
'paddle.floor'
],
'Abs'
:
[
'paddle.abs'
],
'Erf'
:
[
'paddle.erf'
],
'Sin'
:
[
'paddle.sin'
],
'Cos'
:
[
'paddle.cos'
],
}
def
__init__
(
self
,
decoder
,
paddle_graph
):
...
...
@@ -2128,14 +2130,35 @@ class OpSet9():
paddings
,
var_x
=
self
.
_pad_if_asymmetric
(
node
,
pads
,
val_x
)
output_size
=
[
0
,
0
]
if
len
(
output_size
)
!=
0
:
paddings
=
[
0
]
*
4
total_paddings
=
list
()
total_paddings
.
append
((
val_x
.
out_shapes
[
0
][
2
]
-
1
)
*
strides
[
0
]
+
dilations
[
0
]
*
(
kernel_shape
[
0
]
-
1
)
+
1
+
out_padding
[
0
]
-
output_size
[
0
])
total_paddings
.
append
((
val_x
.
out_shapes
[
0
][
3
]
-
1
)
*
strides
[
1
]
+
dilations
[
1
]
*
(
kernel_shape
[
1
]
-
1
)
+
1
+
out_padding
[
1
]
-
output_size
[
1
])
if
auto_pad
==
"SAME_UPPER"
:
for
i
in
range
(
len
(
total_paddings
)):
paddings
[
2
*
i
]
=
total_paddings
[
0
]
-
total_paddings
[
0
]
//
2
paddings
[
2
*
i
+
1
]
=
total_paddings
[
0
]
//
2
else
:
for
i
in
range
(
len
(
total_paddings
)):
paddings
[
2
*
i
]
=
total_paddings
[
0
]
//
2
paddings
[
2
*
i
+
1
]
=
total_paddings
[
0
]
-
total_paddings
[
0
]
//
2
else
:
output_size
=
[
0
,
0
]
output_size
[
0
]
=
(
val_x
.
out_shapes
[
0
][
2
]
-
1
)
*
strides
[
0
]
-
2
*
paddings
[
0
]
+
dilations
[
0
]
*
(
kernel_shape
[
0
]
-
1
)
+
1
+
out_padding
[
0
]
output_size
[
1
]
=
(
val_x
.
out_shapes
[
0
][
3
]
-
1
)
*
strides
[
1
]
-
2
*
paddings
[
1
]
+
dilations
[
1
]
*
(
kernel_shape
[
1
]
-
1
)
+
1
+
out_padding
[
1
]
output_size
[
0
]
=
(
val_x
.
out_shapes
[
0
][
2
]
-
1
)
*
strides
[
0
]
-
2
*
paddings
[
0
]
+
dilations
[
0
]
*
(
kernel_shape
[
0
]
-
1
)
+
1
+
out_padding
[
0
]
output_size
[
1
]
=
(
val_x
.
out_shapes
[
0
][
3
]
-
1
)
*
strides
[
1
]
-
2
*
paddings
[
1
]
+
dilations
[
1
]
*
(
kernel_shape
[
1
]
-
1
)
+
1
+
out_padding
[
1
]
# Conv2DTranspose缺少output_size,只能在forward里头传进output_size
inputs_dict
=
{
'x'
:
val_x
if
isinstance
(
val_x
,
str
)
else
val_x
.
name
}
...
...
@@ -2178,6 +2201,8 @@ class OpSet9():
if
val_b
is
not
None
:
_rename_or_remove_weight
(
self
.
weights
,
val_b
.
name
,
op_name
+
'.bias'
)
else
:
layer_attrs
[
"bias_attr"
]
=
False
self
.
paddle_graph
.
add_layer
(
kernel
=
paddle_op
,
inputs
=
inputs_dict
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录