From 1a53476f47ac8586968afaaa078c4f9dfa47edb5 Mon Sep 17 00:00:00 2001 From: enkilee Date: Sun, 4 Jun 2023 07:44:54 +0000 Subject: [PATCH 1/9] fix --- python/tests/ops/test_one_hot_op.py | 93 +++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 17 deletions(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index 4dd01e07d9..e7612792e1 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -17,6 +17,7 @@ import unittest import numpy as np from op_test import OpTest, OpTestTool +from op_test_helper import TestCaseHelper import paddle import paddle.nn.functional as F import cinn @@ -28,19 +29,22 @@ "x86 test will be skipped due to timeout.") class TestOneHotOp(OpTest): def setUp(self): - self.init_case() + print(f"\nRunning {self.__class__.__name__}: {self.case}") + self.prepare_inputs() - def init_case(self): + def prepare_inputs(self): self.inputs = { "X": np.random.random_integers(0, 9, (10)).astype("int64") } self.depth = 10 self.axis = -1 self.dtype = "float32" + self.x_np = self.random( + shape=self.case["x_shape"], dtype=self.case["x_dtype"]) def build_paddle_program(self, target): - x = paddle.to_tensor(self.inputs["X"]) - out = F.one_hot(x, self.depth) + x = paddle.to_tensor(self.x_np, stop_gradient=True) + out = F.one_hot(x, depth=self.case["depth"]) self.paddle_outputs = [out] @@ -48,24 +52,79 @@ def build_paddle_program(self, target): # the forward result will be incorrect. def build_cinn_program(self, target): builder = NetBuilder("one_hot") - x = builder.create_input(Int(64), self.inputs["X"].shape, "X") - on_value = builder.fill_constant([1], 1, 'on_value', 'int64') - off_value = builder.fill_constant([1], 0, 'off_value', 'int64') + x = builder.create_input( + self.nptype2cinntype(self.case["x_dtype"]), self.case["x_shape"], + "x") + on_value = builder.fill_constant([1], + 1, + 'on_value', + dtype=self.case["x_dtype"]) + off_value = builder.fill_constant([1], + 0, + 'off_value', + dtype=self.case["x_dtype"]) + out = builder.broadcast_to( + x, + on_value, + off_value, + depth=self.case["depth"], + axis=self.case["axis"], + dtype=self.case["x_dtype"]) - out = builder.one_hot(x, on_value, off_value, self.depth, self.axis, - self.dtype) prog = builder.build() - forward_res = self.get_cinn_output(prog, target, [x], - [self.inputs["X"]], [out]) + res = self.get_cinn_output(prog, target, [x], [self.x_np], [out]) - self.cinn_outputs = forward_res + self.cinn_outputs = [res[0]] def test_check_results(self): - self.build_paddle_program(self.target) - self.build_cinn_program(self.target) - self.check_results(self.paddle_outputs, self.cinn_outputs, 1e-5, False, - False) + max_relative_error = self.case[ + "max_relative_error"] if "max_relative_error" in self.case else 1e-5 + self.check_outputs_and_grads(max_relative_error=max_relative_error) + + +class TestOneHotOpTest(TestCaseHelper): + def init_attrs(self): + self.class_name = "TestOneHotOpTest" + self.cls = TestOneHotOp + self.inputs = [ + { + "x_shape": [1], + "depth": 10, + "broadcast_axes": -1, + }, + { + "x_shape": [1024], + "depth": 10, + "broadcast_axes": -1, + }, + { + "x_shape": [32, 64], + "depth": 10, + "broadcast_axes": -1, + }, + { + "x_shape": [16, 8, 4], + "depth": 10, + "broadcast_axes": -1, + }, + { + "x_shape": [16, 8, 4, 2], + "depth": 10, + "broadcast_axes": -1, + }, + { + "x_shape": [16, 8, 4, 2, 1], + "depth": 10, + "broadcast_axes": -1, + }, + ] + self.dtypes = [{ + "x_dtype": "int32", + }, { + "x_dtype": "int64", + }] + self.attrs = [] if __name__ == "__main__": - unittest.main() + TestOneHotOpTest().run() From 73c7a50732fc792fd4a9cecec45bf658096bf50f Mon Sep 17 00:00:00 2001 From: enkilee Date: Sun, 4 Jun 2023 07:50:55 +0000 Subject: [PATCH 2/9] fix --- python/tests/ops/test_one_hot_op.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index e7612792e1..0869612af9 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -63,7 +63,7 @@ def build_cinn_program(self, target): 0, 'off_value', dtype=self.case["x_dtype"]) - out = builder.broadcast_to( + out = builder.one_hot( x, on_value, off_value, From 6ba5625fb24332a4ec47d5c5020aa1ecb48ef405 Mon Sep 17 00:00:00 2001 From: enkilee Date: Mon, 5 Jun 2023 03:07:38 +0000 Subject: [PATCH 3/9] fix --- python/tests/ops/test_one_hot_op.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index 0869612af9..b5b6d227a6 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -36,15 +36,12 @@ def prepare_inputs(self): self.inputs = { "X": np.random.random_integers(0, 9, (10)).astype("int64") } - self.depth = 10 - self.axis = -1 - self.dtype = "float32" self.x_np = self.random( shape=self.case["x_shape"], dtype=self.case["x_dtype"]) def build_paddle_program(self, target): x = paddle.to_tensor(self.x_np, stop_gradient=True) - out = F.one_hot(x, depth=self.case["depth"]) + out = F.one_hot(x, num_classes=self.case["num_classes"]) self.paddle_outputs = [out] @@ -89,33 +86,39 @@ def init_attrs(self): self.inputs = [ { "x_shape": [1], + "num_classes": 10, "depth": 10, - "broadcast_axes": -1, + "axis": -1, }, { "x_shape": [1024], + "num_classes": 10, "depth": 10, - "broadcast_axes": -1, + "axis": -1, }, { "x_shape": [32, 64], + "num_classes": 10, "depth": 10, - "broadcast_axes": -1, + "axis": -1, }, { "x_shape": [16, 8, 4], + "num_classes": 10, "depth": 10, "broadcast_axes": -1, }, { "x_shape": [16, 8, 4, 2], + "num_classes": 10, "depth": 10, - "broadcast_axes": -1, + "axis": -1, }, { "x_shape": [16, 8, 4, 2, 1], + "num_classes": 10, "depth": 10, - "broadcast_axes": -1, + "axis": -1, }, ] self.dtypes = [{ From 76e21f452d9cec5fd881d77ca9016c8541897b8d Mon Sep 17 00:00:00 2001 From: enkilee Date: Mon, 5 Jun 2023 11:16:32 +0000 Subject: [PATCH 4/9] fix --- python/tests/ops/test_one_hot_op.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index b5b6d227a6..fbf20f275a 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -33,9 +33,6 @@ def setUp(self): self.prepare_inputs() def prepare_inputs(self): - self.inputs = { - "X": np.random.random_integers(0, 9, (10)).astype("int64") - } self.x_np = self.random( shape=self.case["x_shape"], dtype=self.case["x_dtype"]) From d62bb96a16ca803e6a08622b07665a974be497a7 Mon Sep 17 00:00:00 2001 From: enkilee Date: Wed, 7 Jun 2023 06:56:38 +0000 Subject: [PATCH 5/9] fix --- python/tests/ops/test_one_hot_op.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index fbf20f275a..9df5efd268 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -38,7 +38,7 @@ def prepare_inputs(self): def build_paddle_program(self, target): x = paddle.to_tensor(self.x_np, stop_gradient=True) - out = F.one_hot(x, num_classes=self.case["num_classes"]) + out = F.one_hot(x, num_classes=self.case["depth"]) self.paddle_outputs = [out] @@ -49,6 +49,7 @@ def build_cinn_program(self, target): x = builder.create_input( self.nptype2cinntype(self.case["x_dtype"]), self.case["x_shape"], "x") + buildtype = 'float32' on_value = builder.fill_constant([1], 1, 'on_value', @@ -63,7 +64,7 @@ def build_cinn_program(self, target): off_value, depth=self.case["depth"], axis=self.case["axis"], - dtype=self.case["x_dtype"]) + buildtype) prog = builder.build() res = self.get_cinn_output(prog, target, [x], [self.x_np], [out]) @@ -83,37 +84,31 @@ def init_attrs(self): self.inputs = [ { "x_shape": [1], - "num_classes": 10, "depth": 10, "axis": -1, }, { "x_shape": [1024], - "num_classes": 10, "depth": 10, "axis": -1, }, { "x_shape": [32, 64], - "num_classes": 10, "depth": 10, "axis": -1, }, { "x_shape": [16, 8, 4], - "num_classes": 10, "depth": 10, "broadcast_axes": -1, }, { "x_shape": [16, 8, 4, 2], - "num_classes": 10, "depth": 10, "axis": -1, }, { "x_shape": [16, 8, 4, 2, 1], - "num_classes": 10, "depth": 10, "axis": -1, }, From 169b3d79ffeef551097b96c76a5c45563efb0b4c Mon Sep 17 00:00:00 2001 From: enkilee Date: Wed, 7 Jun 2023 07:55:11 +0000 Subject: [PATCH 6/9] fix --- python/tests/ops/test_one_hot_op.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index 9df5efd268..cdd74efa47 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -49,7 +49,7 @@ def build_cinn_program(self, target): x = builder.create_input( self.nptype2cinntype(self.case["x_dtype"]), self.case["x_shape"], "x") - buildtype = 'float32' + buildtype = "float32" on_value = builder.fill_constant([1], 1, 'on_value', @@ -117,6 +117,10 @@ def init_attrs(self): "x_dtype": "int32", }, { "x_dtype": "int64", + }, { + "x_dtype": "float32", + }, { + "x_dtype": "float64", }] self.attrs = [] From e34c47833dad7a577b6d97870c5ece40b679c888 Mon Sep 17 00:00:00 2001 From: enkilee Date: Thu, 8 Jun 2023 09:03:45 +0000 Subject: [PATCH 7/9] fix --- python/tests/ops/test_one_hot_op.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index cdd74efa47..b12c5e68bc 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -35,6 +35,7 @@ def setUp(self): def prepare_inputs(self): self.x_np = self.random( shape=self.case["x_shape"], dtype=self.case["x_dtype"]) + self.dtype = "float32" def build_paddle_program(self, target): x = paddle.to_tensor(self.x_np, stop_gradient=True) @@ -49,7 +50,6 @@ def build_cinn_program(self, target): x = builder.create_input( self.nptype2cinntype(self.case["x_dtype"]), self.case["x_shape"], "x") - buildtype = "float32" on_value = builder.fill_constant([1], 1, 'on_value', @@ -64,7 +64,7 @@ def build_cinn_program(self, target): off_value, depth=self.case["depth"], axis=self.case["axis"], - buildtype) + dtype=self.dtype) prog = builder.build() res = self.get_cinn_output(prog, target, [x], [self.x_np], [out]) From b25f0809ef8c556e9d8fbe8719a53221b66bb654 Mon Sep 17 00:00:00 2001 From: enkilee Date: Thu, 8 Jun 2023 15:41:11 +0000 Subject: [PATCH 8/9] fix --- python/tests/ops/test_one_hot_op.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index b12c5e68bc..f4e8723980 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -117,10 +117,6 @@ def init_attrs(self): "x_dtype": "int32", }, { "x_dtype": "int64", - }, { - "x_dtype": "float32", - }, { - "x_dtype": "float64", }] self.attrs = [] From 8cbe68ebe8ff7c56d03b174eed2673c3c9324f91 Mon Sep 17 00:00:00 2001 From: enkilee Date: Fri, 9 Jun 2023 05:20:13 +0000 Subject: [PATCH 9/9] fix --- python/tests/ops/test_one_hot_op.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/tests/ops/test_one_hot_op.py b/python/tests/ops/test_one_hot_op.py index f4e8723980..5cebb51260 100755 --- a/python/tests/ops/test_one_hot_op.py +++ b/python/tests/ops/test_one_hot_op.py @@ -100,7 +100,7 @@ def init_attrs(self): { "x_shape": [16, 8, 4], "depth": 10, - "broadcast_axes": -1, + "axis": -1, }, { "x_shape": [16, 8, 4, 2],