Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
41b51c34
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看板
提交
41b51c34
编写于
8月 02, 2022
作者:
W
wjj19950828
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add logical ops
上级
208a2821
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
110 addition
and
14 deletion
+110
-14
tests/onnx/auto_scan_test.py
tests/onnx/auto_scan_test.py
+8
-2
tests/onnx/onnxbase.py
tests/onnx/onnxbase.py
+27
-12
tests/onnx/test_auto_scan_logical_ops.py
tests/onnx/test_auto_scan_logical_ops.py
+75
-0
未找到文件。
tests/onnx/auto_scan_test.py
浏览文件 @
41b51c34
...
@@ -155,6 +155,7 @@ class OPConvertAutoScanTest(unittest.TestCase):
...
@@ -155,6 +155,7 @@ class OPConvertAutoScanTest(unittest.TestCase):
# max_opset_version is a fixed value
# max_opset_version is a fixed value
max_opset_version
=
15
max_opset_version
=
15
enable_onnx_checker
=
True
enable_onnx_checker
=
True
run_dynamic
=
False
self
.
num_ran_tests
+=
1
self
.
num_ran_tests
+=
1
# add ignore testcases
# add ignore testcases
...
@@ -165,6 +166,9 @@ class OPConvertAutoScanTest(unittest.TestCase):
...
@@ -165,6 +166,9 @@ class OPConvertAutoScanTest(unittest.TestCase):
if
not
isinstance
(
op_names
,
(
tuple
,
list
)):
if
not
isinstance
(
op_names
,
(
tuple
,
list
)):
op_names
=
[
op_names
]
op_names
=
[
op_names
]
if
not
isinstance
(
min_opset_version
,
(
tuple
,
list
)):
min_opset_version
=
[
min_opset_version
]
input_type_list
=
None
input_type_list
=
None
if
len
(
test_data_types
)
>
1
:
if
len
(
test_data_types
)
>
1
:
input_type_list
=
list
(
product
(
*
test_data_types
))
input_type_list
=
list
(
product
(
*
test_data_types
))
...
@@ -186,12 +190,14 @@ class OPConvertAutoScanTest(unittest.TestCase):
...
@@ -186,12 +190,14 @@ class OPConvertAutoScanTest(unittest.TestCase):
max_opset_version
=
config
[
"max_opset_version"
]
max_opset_version
=
config
[
"max_opset_version"
]
if
"enable_onnx_checker"
in
config
.
keys
():
if
"enable_onnx_checker"
in
config
.
keys
():
enable_onnx_checker
=
config
[
"enable_onnx_checker"
]
enable_onnx_checker
=
config
[
"enable_onnx_checker"
]
if
"run_dynamic"
in
config
.
keys
():
run_dynamic
=
config
[
"run_dynamic"
]
for
i
in
range
(
len
(
op_names
)):
for
i
in
range
(
len
(
op_names
)):
obj
=
ONNXConverter
(
op_names
[
i
],
min_opset_version
,
obj
=
ONNXConverter
(
op_names
[
i
],
min_opset_version
[
i
]
,
max_opset_version
,
op_names
[
i
],
inputs_name
,
max_opset_version
,
op_names
[
i
],
inputs_name
,
outputs_name
,
inputs_shape
,
delta
,
rtol
,
attrs
,
outputs_name
,
inputs_shape
,
delta
,
rtol
,
attrs
,
enable_onnx_checker
)
enable_onnx_checker
,
run_dynamic
)
for
input_type
in
input_type_list
:
for
input_type
in
input_type_list
:
input_data
=
list
()
input_data
=
list
()
for
j
,
shape
in
enumerate
(
test_data_shapes
):
for
j
,
shape
in
enumerate
(
test_data_shapes
):
...
...
tests/onnx/onnxbase.py
浏览文件 @
41b51c34
...
@@ -101,7 +101,8 @@ class ONNXConverter(object):
...
@@ -101,7 +101,8 @@ class ONNXConverter(object):
delta
=
1e-5
,
delta
=
1e-5
,
rtol
=
1e-5
,
rtol
=
1e-5
,
attrs
=
[],
attrs
=
[],
enable_onnx_checker
=
True
):
enable_onnx_checker
=
True
,
run_dynamic
=
False
):
self
.
op_type
=
op_type
self
.
op_type
=
op_type
assert
isinstance
(
self
.
op_type
,
assert
isinstance
(
self
.
op_type
,
str
),
"The dtype of op_type must be string!"
str
),
"The dtype of op_type must be string!"
...
@@ -124,6 +125,7 @@ class ONNXConverter(object):
...
@@ -124,6 +125,7 @@ class ONNXConverter(object):
self
.
inputs_shape
=
inputs_shape
self
.
inputs_shape
=
inputs_shape
self
.
attrs
=
attrs
self
.
attrs
=
attrs
self
.
enable_onnx_checker
=
enable_onnx_checker
self
.
enable_onnx_checker
=
enable_onnx_checker
self
.
run_dynamic
=
run_dynamic
def
set_input_data
(
self
,
group_name
,
*
args
):
def
set_input_data
(
self
,
group_name
,
*
args
):
"""
"""
...
@@ -175,23 +177,36 @@ class ONNXConverter(object):
...
@@ -175,23 +177,36 @@ class ONNXConverter(object):
onnx_path
,
onnx_path
,
paddle_path
,
paddle_path
,
convert_to_lite
=
False
,
convert_to_lite
=
False
,
enable_onnx_checker
=
self
.
enable_onnx_checker
)
enable_onnx_checker
=
self
.
enable_onnx_checker
,
disable_feedback
=
True
)
def
_mk_paddle_res
(
self
,
ver
):
def
_mk_paddle_res
(
self
,
ver
):
"""
"""
make paddle res
make paddle res
"""
"""
# input data
paddle_numpy_feed
=
list
()
paddle_tensor_feed
=
list
()
for
i
in
range
(
len
(
self
.
input_feed
)):
paddle_numpy_feed
.
append
(
self
.
input_feed
[
self
.
inputs_name
[
i
]])
paddle_tensor_feed
.
append
(
paddle
.
to_tensor
(
self
.
input_feed
[
self
.
inputs_name
[
i
]]))
if
self
.
run_dynamic
:
paddle_path
=
os
.
path
.
join
(
self
.
pwd
,
self
.
name
,
self
.
name
+
'_'
+
str
(
ver
)
+
'_paddle/'
)
import
sys
sys
.
path
.
append
(
paddle_path
)
from
x2paddle_code
import
main
result
=
main
(
*
paddle_tensor_feed
)
else
:
paddle_path
=
os
.
path
.
join
(
paddle_path
=
os
.
path
.
join
(
self
.
pwd
,
self
.
name
,
self
.
pwd
,
self
.
name
,
self
.
name
+
'_'
+
str
(
ver
)
+
'_paddle/inference_model/model'
)
self
.
name
+
'_'
+
str
(
ver
)
+
'_paddle/inference_model/model'
)
paddle
.
disable_static
()
paddle
.
disable_static
()
# run
# run
model
=
paddle
.
jit
.
load
(
paddle_path
)
model
=
paddle
.
jit
.
load
(
paddle_path
)
paddle_feed
=
list
()
result
=
model
(
*
paddle_numpy_feed
)
for
i
in
range
(
len
(
self
.
input_feed
)):
paddle_feed
.
append
(
self
.
input_feed
[
self
.
inputs_name
[
i
]])
result
=
model
(
*
paddle_feed
)
# get paddle outputs
# get paddle outputs
if
isinstance
(
result
,
(
tuple
,
list
)):
if
isinstance
(
result
,
(
tuple
,
list
)):
result
=
tuple
(
out
.
numpy
()
for
out
in
result
)
result
=
tuple
(
out
.
numpy
()
for
out
in
result
)
...
...
tests/onnx/test_auto_scan_logical_ops.py
0 → 100644
浏览文件 @
41b51c34
# Copyright (c) 2022 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.
from
auto_scan_test
import
OPConvertAutoScanTest
from
hypothesis
import
reproduce_failure
from
onnxbase
import
randtool
import
hypothesis.strategies
as
st
import
numpy
as
np
import
unittest
min_opset_version_map
=
{
"And"
:
7
,
}
class
TestLogicalopsConvert
(
OPConvertAutoScanTest
):
"""
ONNX op: Logical ops
OPset version: 7~15
"""
def
sample_convert_config
(
self
,
draw
):
input1_shape
=
draw
(
st
.
lists
(
st
.
integers
(
min_value
=
10
,
max_value
=
20
),
min_size
=
2
,
max_size
=
4
))
if
draw
(
st
.
booleans
()):
input2_shape
=
[
input1_shape
[
-
1
]]
else
:
input2_shape
=
input1_shape
if
draw
(
st
.
booleans
()):
input2_shape
=
[
1
]
input_dtype
=
draw
(
st
.
sampled_from
([
"bool"
]))
config
=
{
"op_names"
:
[
"And"
],
"test_data_shapes"
:
[
input1_shape
,
input2_shape
],
"test_data_types"
:
[[
input_dtype
],
[
input_dtype
]],
"inputs_shape"
:
[],
"min_opset_version"
:
7
,
"inputs_name"
:
[
"x"
,
"y"
],
"outputs_name"
:
[
"z"
],
"delta"
:
1e-4
,
"rtol"
:
1e-4
,
"run_dynamic"
:
True
,
}
min_opset_versions
=
list
()
for
op_name
in
config
[
"op_names"
]:
min_opset_versions
.
append
(
min_opset_version_map
[
op_name
])
config
[
"min_opset_version"
]
=
min_opset_versions
attrs
=
{}
return
(
config
,
attrs
)
def
test
(
self
):
self
.
run_and_statis
(
max_examples
=
30
)
if
__name__
==
"__main__"
:
unittest
.
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录