未验证 提交 6ecd7b76 编写于 作者: W WJJ1995 提交者: GitHub

Add autoscan test for Elementwise ops (#854)

* Add autoscan Add op test

* Add elementwise op tests

* Add mod optest
上级 208a2821
......@@ -165,6 +165,9 @@ class OPConvertAutoScanTest(unittest.TestCase):
if not isinstance(op_names, (tuple, list)):
op_names = [op_names]
if not isinstance(min_opset_version, (tuple, list)):
min_opset_version = [min_opset_version]
input_type_list = None
if len(test_data_types) > 1:
input_type_list = list(product(*test_data_types))
......@@ -188,7 +191,7 @@ class OPConvertAutoScanTest(unittest.TestCase):
enable_onnx_checker = config["enable_onnx_checker"]
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,
outputs_name, inputs_shape, delta, rtol, attrs,
enable_onnx_checker)
......
......@@ -175,7 +175,8 @@ class ONNXConverter(object):
onnx_path,
paddle_path,
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):
"""
......
# 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 = {
"Add": 7,
"Sub": 7,
"Div": 7,
"Mul": 7,
"Pow": 7,
"Max": 9,
"Min": 9,
}
class TestElementwiseopsConvert(OPConvertAutoScanTest):
"""
ONNX op: elementwise 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
def generator_data():
input_data = randtool("float", -5.0, 5.0, input2_shape)
input_data[abs(input_data) < 1.0] = 1.0
return input_data
input_dtype = draw(st.sampled_from(["float32", "float64"]))
config = {
"op_names": ["Add", "Sub", "Div", "Mul", "Pow", "Max", "Min"],
"test_data_shapes": [input1_shape, generator_data],
"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
}
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()
# 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
class TestModConvert(OPConvertAutoScanTest):
"""
ONNX op: Mod
OPset version: 10~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
def generator_data():
input_data = randtool("float", -5.0, 5.0, input2_shape)
input_data[abs(input_data) < 1.0] = 1.0
return input_data
input_dtype = draw(
st.sampled_from(["int32", "int64", "float32", "float64"]))
config = {
"op_names": ["Mod"],
"test_data_shapes": [input1_shape, generator_data],
"test_data_types": [[input_dtype], [input_dtype]],
"inputs_shape": [],
"min_opset_version": 10,
"inputs_name": ["x", "y"],
"outputs_name": ["z"],
"delta": 1e-4,
"rtol": 1e-4
}
attrs = {"fmod": 0 if "int" in input_dtype else 1, }
return (config, attrs)
def test(self):
self.run_and_statis(max_examples=30)
if __name__ == "__main__":
unittest.main()
......@@ -32,3 +32,5 @@ def print_mapping_info(func):
class OpSet10(OpSet9):
def __init__(self, decoder, paddle_graph):
super(OpSet10, self).__init__(decoder, paddle_graph)
# Support Mod op Since opset version >= 10
self.elementwise_ops.update({"Mod": "paddle.mod"})
......@@ -83,6 +83,7 @@ class ConverterCheck(threading.Thread):
params.update({"extra": json.dumps(extra)})
try:
logging.basicConfig(level=logging.INFO)
requests.get(stats_api, params, timeout=2)
except Exception:
pass
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册