diff --git a/tests/onnx/test_auto_scan_mod.py b/tests/onnx/test_auto_scan_mod.py index 05e6b0e31bbeaa948f653078cfaaf9fd4eea4cb8..201a943e0fe48ae7712644b4dd04d95c456372a1 100644 --- a/tests/onnx/test_auto_scan_mod.py +++ b/tests/onnx/test_auto_scan_mod.py @@ -42,8 +42,7 @@ class TestModConvert(OPConvertAutoScanTest): input_data[abs(input_data) < 1.0] = 1.0 return input_data - input_dtype = draw( - st.sampled_from(["int32", "int64", "float32", "float64"])) + input_dtype = draw(st.sampled_from(["int32", "int64"])) config = { "op_names": ["Mod"], diff --git a/x2paddle/op_mapper/onnx2paddle/opset10.py b/x2paddle/op_mapper/onnx2paddle/opset10.py index f0ad893af653f7c2a82026b43d6c73a17513402f..5a697e95a31d5805ac090c8c3c6533df00f3a3ca 100644 --- a/x2paddle/op_mapper/onnx2paddle/opset10.py +++ b/x2paddle/op_mapper/onnx2paddle/opset10.py @@ -46,8 +46,6 @@ def _get_same_padding(in_size, kernel_size, stride, autopad): 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"}) @print_mapping_info def AveragePool(self, node): @@ -99,3 +97,18 @@ class OpSet10(OpSet9): inputs={'x': val_x if isinstance(val_x, str) else val_x.name}, outputs=layer_outputs, **layer_attrs) + + @print_mapping_info + def Mod(self, node): + # Support Mod op Since opset version >= 10 + val_x = self.graph.get_input_node(node, idx=0, copy=True) + val_y = self.graph.get_input_node(node, idx=1, copy=True) + input_dtype = str(val_x.dtype) + assert "int" in input_dtype, 'Now only support int32 or int64 dtype' + fmod = node.get_attr('fmod', 0) + assert fmod == 0, 'Now only support fmod == 0' + self.paddle_graph.add_layer( + 'paddle.mod', + inputs={"x": val_x.name, + "y": val_y.name}, + outputs=[node.name])