From 6b823b6db4565f8c4106980186d40277f02daa98 Mon Sep 17 00:00:00 2001 From: SigureMo Date: Wed, 8 Mar 2023 20:14:46 +0800 Subject: [PATCH 1/2] fix failure to trace densenet --- pyproject.toml | 4 ++++ src/paddlefx/graph.py | 2 ++ src/paddlefx/symbolic_trace.py | 8 ++++++-- tests/test_trace.py | 3 +-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e843322..04f1afd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,10 @@ known_first_party = ["paddlefx"] minversion = "7.0.0" pythonpath = "tests" testpaths = ["tests"] +filterwarnings = [ + # Ignore warnings raised by paddlepaddle 2.4 + "ignore::DeprecationWarning", +] [tool.setuptools_scm] write_to = "src/paddlefx/_version.py" diff --git a/src/paddlefx/graph.py b/src/paddlefx/graph.py index 5b56eca..d8fa0c8 100644 --- a/src/paddlefx/graph.py +++ b/src/paddlefx/graph.py @@ -142,6 +142,8 @@ def python_code(self, root_module): for node in self.nodes: if node.op == 'placeholder': free_vars.append(node.target) + if node.target != node.name: + body.append(f'{node.name} = {node.target}\n') continue elif node.op == 'call_method': body.append( diff --git a/src/paddlefx/symbolic_trace.py b/src/paddlefx/symbolic_trace.py index 43f0336..b452b5d 100644 --- a/src/paddlefx/symbolic_trace.py +++ b/src/paddlefx/symbolic_trace.py @@ -40,8 +40,12 @@ def _find_module(root, m): def _is_leaf_module(m) -> bool: - return m.__module__.startswith("paddle.nn") and not isinstance( - m, paddle.nn.Sequential + return ( + m.__module__.startswith("paddle.nn") + # `paddle.fluid.dygraph.nn` has removed in paddlepaddle 2.5.0 (develop), + # but still keep it for compatibility with paddlepaddle<=2.4 + or m.__module__.startswith("paddle.fluid.dygraph.nn") + and not isinstance(m, paddle.nn.Sequential) ) diff --git a/tests/test_trace.py b/tests/test_trace.py index 6ca2d39..5d09143 100644 --- a/tests/test_trace.py +++ b/tests/test_trace.py @@ -11,8 +11,7 @@ def setUp(self): self.models_to_track = [ (paddle.vision.models.resnet18(), paddle.randn([2, 3, 224, 224])), (paddle.vision.models.alexnet(), paddle.randn([2, 3, 224, 224])), - # DenseNet will fail, since it calls into _C_ops - # (paddle.vision.models.densenet121(), paddle.randn([2, 3, 224, 224])), + (paddle.vision.models.densenet121(), paddle.randn([2, 3, 224, 224])), (paddle.vision.models.googlenet(), paddle.randn([2, 3, 224, 224])), (paddle.vision.models.inception_v3(), paddle.randn([2, 3, 299, 299])), (paddle.vision.models.mobilenet_v2(), paddle.randn([2, 3, 224, 224])), From f617960948d7bd6ad53786b14666b554636891dc Mon Sep 17 00:00:00 2001 From: SigureMo Date: Wed, 8 Mar 2023 20:19:07 +0800 Subject: [PATCH 2/2] add whitespace --- src/paddlefx/symbolic_trace.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/paddlefx/symbolic_trace.py b/src/paddlefx/symbolic_trace.py index b452b5d..7c9d50c 100644 --- a/src/paddlefx/symbolic_trace.py +++ b/src/paddlefx/symbolic_trace.py @@ -43,7 +43,7 @@ def _is_leaf_module(m) -> bool: return ( m.__module__.startswith("paddle.nn") # `paddle.fluid.dygraph.nn` has removed in paddlepaddle 2.5.0 (develop), - # but still keep it for compatibility with paddlepaddle<=2.4 + # but still keep it for compatibility with paddlepaddle <= 2.4 or m.__module__.startswith("paddle.fluid.dygraph.nn") and not isinstance(m, paddle.nn.Sequential) )