From 441606fd026aa75523a1bb403b3ddeb0a2aaa5b7 Mon Sep 17 00:00:00 2001 From: levi131 <83750468+levi131@users.noreply.github.com> Date: Wed, 13 Jul 2022 17:20:18 +0800 Subject: [PATCH] add fifth order test case (#44303) --- .../tests/unittests/autograd/test_primapi.py | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/python/paddle/fluid/tests/unittests/autograd/test_primapi.py b/python/paddle/fluid/tests/unittests/autograd/test_primapi.py index dc52c5bc33..ec06eda66f 100644 --- a/python/paddle/fluid/tests/unittests/autograd/test_primapi.py +++ b/python/paddle/fluid/tests/unittests/autograd/test_primapi.py @@ -161,7 +161,7 @@ class TestGrad(unittest.TestCase): exe = paddle.static.Executor(place) exe.run(startup) outs = exe.run(main, feed=feed, fetch_list=fetch_list) - np.allclose(outs, result) + np.testing.assert_allclose(outs, result, rtol=1e-5, atol=1e-5) paddle.incubate.autograd.disable_prim() def test_fourth_order(self): @@ -196,7 +196,43 @@ class TestGrad(unittest.TestCase): exe = paddle.static.Executor(place) exe.run(startup) outs = exe.run(main, feed=feed, fetch_list=fetch_list) - np.allclose(outs, result) + np.testing.assert_allclose(outs, result, rtol=1e-5, atol=1e-5) + paddle.incubate.autograd.disable_prim() + + def test_fifth_order(self): + paddle.incubate.autograd.enable_prim() + main = paddle.static.Program() + startup = paddle.static.Program() + with paddle.static.program_guard(main, startup): + x = paddle.static.data(name='x', shape=[1], dtype='float32') + x2 = paddle.multiply(x, x) + x3 = paddle.multiply(x2, x) + x4 = paddle.multiply(x3, x) + x5 = paddle.multiply(x4, x) + x6 = paddle.multiply(x5, x) + out = x6 + x5 + + grad1, = paddle.incubate.autograd.grad([out], [x]) + grad2, = paddle.incubate.autograd.grad([grad1], [x]) + grad3, = paddle.incubate.autograd.grad([grad2], [x]) + grad4, = paddle.incubate.autograd.grad([grad3], [x]) + grad5, = paddle.incubate.autograd.grad([grad4], [x]) + + paddle.incubate.autograd.prim2orig() + + feed = { + x.name: np.array([2.]).astype('float32'), + } + fetch_list = [grad5.name] + result = [np.array([1560.0])] + + place = paddle.CPUPlace() + if paddle.device.is_compiled_with_cuda(): + place = paddle.CUDAPlace(0) + exe = paddle.static.Executor(place) + exe.run(startup) + outs = exe.run(main, feed=feed, fetch_list=fetch_list) + np.testing.assert_allclose(outs, result, rtol=1e-5, atol=1e-5) paddle.incubate.autograd.disable_prim() def test_disable_prim(self): -- GitLab