From 615620ec9a2e17d729b93e6885c81956ffd6c17f Mon Sep 17 00:00:00 2001 From: GaoWei8 Date: Tue, 15 Sep 2020 04:06:17 +0000 Subject: [PATCH 01/12] fix cudnn dyload --- paddle/fluid/platform/dynload/cudnn.h | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/paddle/fluid/platform/dynload/cudnn.h b/paddle/fluid/platform/dynload/cudnn.h index 7e85cb57f3393..ca237efa115cf 100644 --- a/paddle/fluid/platform/dynload/cudnn.h +++ b/paddle/fluid/platform/dynload/cudnn.h @@ -101,9 +101,6 @@ extern void EnforceCUDNNLoaded(const char* fn_name); __macro(cudnnDropoutGetStatesSize); \ __macro(cudnnSetDropoutDescriptor); \ __macro(cudnnRestoreDropoutDescriptor); \ - __macro(cudnnCreateRNNDataDescriptor); \ - __macro(cudnnDestroyRNNDataDescriptor); \ - __macro(cudnnSetRNNDataDescriptor); \ __macro(cudnnCreateRNNDescriptor); \ __macro(cudnnGetRNNParamsSize); \ __macro(cudnnGetRNNWorkspaceSize); \ @@ -112,11 +109,6 @@ extern void EnforceCUDNNLoaded(const char* fn_name); __macro(cudnnRNNBackwardData); \ __macro(cudnnRNNBackwardWeights); \ __macro(cudnnRNNForwardInference); \ - __macro(cudnnRNNForwardTrainingEx); \ - __macro(cudnnSetRNNPaddingMode); \ - __macro(cudnnRNNBackwardDataEx); \ - __macro(cudnnRNNBackwardWeightsEx); \ - __macro(cudnnRNNForwardInferenceEx); \ __macro(cudnnDestroyDropoutDescriptor); \ __macro(cudnnDestroyRNNDescriptor); \ __macro(cudnnSetTensorNdDescriptorEx); @@ -188,6 +180,19 @@ CUDNN_DNN_ROUTINE_EACH_R6(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) CUDNN_DNN_ROUTINE_EACH_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) #endif +#if CUDNN_VERSION >= 7201 +#define CUDNN_DNN_ROUTINE_EACH_AFTER_R7(__macro) \ + __macro(cudnnCreateRNNDataDescriptor); \ + __macro(cudnnDestroyRNNDataDescriptor); \ + __macro(cudnnSetRNNDataDescriptor); \ + __macro(cudnnRNNForwardTrainingEx); \ + __macro(cudnnSetRNNPaddingMode); \ + __macro(cudnnRNNBackwardDataEx); \ + __macro(cudnnRNNBackwardWeightsEx); \ + __macro(cudnnRNNForwardInferenceEx); +CUDNN_DNN_ROUTINE_EACH_AFTER_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) +#endif + #if CUDNN_VERSION >= 7401 #define CUDNN_DNN_ROUTINE_EACH_AFTER_R7(__macro) \ __macro(cudnnGetBatchNormalizationForwardTrainingExWorkspaceSize); \ From b437ff0037ba6692fc9d670ce6ba560ec0a8ff5f Mon Sep 17 00:00:00 2001 From: GaoWei8 Date: Tue, 15 Sep 2020 04:26:12 +0000 Subject: [PATCH 02/12] polish codes --- paddle/fluid/operators/cudnn_lstm_cache.h | 7 ++++++- paddle/fluid/platform/cudnn_helper.h | 2 ++ paddle/fluid/platform/dynload/cudnn.h | 16 ++++++++-------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/paddle/fluid/operators/cudnn_lstm_cache.h b/paddle/fluid/operators/cudnn_lstm_cache.h index 4b46e2b475e8b..ccd612fbcc8b3 100644 --- a/paddle/fluid/operators/cudnn_lstm_cache.h +++ b/paddle/fluid/operators/cudnn_lstm_cache.h @@ -54,6 +54,7 @@ class ScopedRNNBase { x_descs_.emplace_back(x_desc_.descriptor(dims_x, strides_x)); y_descs_.emplace_back(y_desc_.descriptor(dims_y, strides_y)); } +#if CUDNN_VERSION >= 7201 if (!sequence_length.empty()) { x_seq_desc_.descriptor(seq_length_, batch_size_, input_size_, true, sequence_length); @@ -61,7 +62,7 @@ class ScopedRNNBase { hidden_size_ * numDirections, true, sequence_length); } - +#endif // ------------------- cudnn hx, hy, cx, cy descriptors---------- std::vector dims_hx = {num_layers_ * numDirections, batch_size_, hidden_size_}; @@ -125,8 +126,10 @@ class ScopedRNNBase { } cudnnTensorDescriptor_t* x_descs() { return x_descs_.data(); } cudnnTensorDescriptor_t* y_descs() { return y_descs_.data(); } +#if CUDNN_VERSION >= 7201 cudnnRNNDataDescriptor_t x_seq_desc() { return x_seq_desc_.desc(); } cudnnRNNDataDescriptor_t y_seq_desc() { return y_seq_desc_.desc(); } +#endif cudnnTensorDescriptor_t init_h_desc() { return init_h_desc_.desc(); } cudnnTensorDescriptor_t init_c_desc() { return init_c_desc_.desc(); } cudnnTensorDescriptor_t last_h_desc() { return last_h_desc_.desc(); } @@ -151,8 +154,10 @@ class ScopedRNNBase { platform::ScopedTensorDescriptor x_desc_; platform::ScopedTensorDescriptor y_desc_; +#if CUDNN_VERSION >= 7201 platform::ScopedRNNTensorDescriptor x_seq_desc_; platform::ScopedRNNTensorDescriptor y_seq_desc_; +#endif platform::ScopedTensorDescriptor init_h_desc_; platform::ScopedTensorDescriptor init_c_desc_; platform::ScopedTensorDescriptor last_h_desc_; diff --git a/paddle/fluid/platform/cudnn_helper.h b/paddle/fluid/platform/cudnn_helper.h index bb4c2a89f6fa5..4b9c5c429dabc 100644 --- a/paddle/fluid/platform/cudnn_helper.h +++ b/paddle/fluid/platform/cudnn_helper.h @@ -294,6 +294,7 @@ class ScopedTensorDescriptor { DISABLE_COPY_AND_ASSIGN(ScopedTensorDescriptor); }; +#if CUDNN_VERSION >= 7201 class ScopedRNNTensorDescriptor { public: ScopedRNNTensorDescriptor() { @@ -337,6 +338,7 @@ class ScopedRNNTensorDescriptor { cudnnRNNDataDescriptor_t desc_; DISABLE_COPY_AND_ASSIGN(ScopedRNNTensorDescriptor); }; +#endif class ScopedDropoutDescriptor { public: diff --git a/paddle/fluid/platform/dynload/cudnn.h b/paddle/fluid/platform/dynload/cudnn.h index ca237efa115cf..2aaa49c966f09 100644 --- a/paddle/fluid/platform/dynload/cudnn.h +++ b/paddle/fluid/platform/dynload/cudnn.h @@ -181,14 +181,14 @@ CUDNN_DNN_ROUTINE_EACH_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) #endif #if CUDNN_VERSION >= 7201 -#define CUDNN_DNN_ROUTINE_EACH_AFTER_R7(__macro) \ - __macro(cudnnCreateRNNDataDescriptor); \ - __macro(cudnnDestroyRNNDataDescriptor); \ - __macro(cudnnSetRNNDataDescriptor); \ - __macro(cudnnRNNForwardTrainingEx); \ - __macro(cudnnSetRNNPaddingMode); \ - __macro(cudnnRNNBackwardDataEx); \ - __macro(cudnnRNNBackwardWeightsEx); \ +#define CUDNN_DNN_ROUTINE_EACH_AFTER_R72(__macro) \ + __macro(cudnnCreateRNNDataDescriptor); \ + __macro(cudnnDestroyRNNDataDescriptor); \ + __macro(cudnnSetRNNDataDescriptor); \ + __macro(cudnnRNNForwardTrainingEx); \ + __macro(cudnnSetRNNPaddingMode); \ + __macro(cudnnRNNBackwardDataEx); \ + __macro(cudnnRNNBackwardWeightsEx); \ __macro(cudnnRNNForwardInferenceEx); CUDNN_DNN_ROUTINE_EACH_AFTER_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) #endif From 244ba709a6abaf2af3de7956bc7a8e8f88e33f63 Mon Sep 17 00:00:00 2001 From: GaoWei8 Date: Tue, 15 Sep 2020 06:08:20 +0000 Subject: [PATCH 03/12] polish codes --- paddle/fluid/operators/cudnn_lstm_cache.h | 5 +++++ paddle/fluid/platform/dynload/cudnn.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/operators/cudnn_lstm_cache.h b/paddle/fluid/operators/cudnn_lstm_cache.h index ccd612fbcc8b3..3181e4b1d990b 100644 --- a/paddle/fluid/operators/cudnn_lstm_cache.h +++ b/paddle/fluid/operators/cudnn_lstm_cache.h @@ -54,6 +54,7 @@ class ScopedRNNBase { x_descs_.emplace_back(x_desc_.descriptor(dims_x, strides_x)); y_descs_.emplace_back(y_desc_.descriptor(dims_y, strides_y)); } + #if CUDNN_VERSION >= 7201 if (!sequence_length.empty()) { x_seq_desc_.descriptor(seq_length_, batch_size_, input_size_, true, @@ -63,6 +64,7 @@ class ScopedRNNBase { sequence_length); } #endif + // ------------------- cudnn hx, hy, cx, cy descriptors---------- std::vector dims_hx = {num_layers_ * numDirections, batch_size_, hidden_size_}; @@ -97,10 +99,13 @@ class ScopedRNNBase { is_bidirec_ ? CUDNN_BIDIRECTIONAL : CUDNN_UNIDIRECTIONAL, CUDNN_LSTM, cudnn_type)); #endif + +#if CUDNN_VERSION >= 7201 if (!sequence_length.empty()) { PADDLE_ENFORCE_CUDA_SUCCESS(platform::dynload::cudnnSetRNNPaddingMode( rnn_desc_.desc(), CUDNN_RNN_PADDED_IO_ENABLED)); } +#endif // ------------------- cudnn weights_size --------------------- size_t weights_size_; diff --git a/paddle/fluid/platform/dynload/cudnn.h b/paddle/fluid/platform/dynload/cudnn.h index 2aaa49c966f09..131781ef76fc0 100644 --- a/paddle/fluid/platform/dynload/cudnn.h +++ b/paddle/fluid/platform/dynload/cudnn.h @@ -190,7 +190,7 @@ CUDNN_DNN_ROUTINE_EACH_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) __macro(cudnnRNNBackwardDataEx); \ __macro(cudnnRNNBackwardWeightsEx); \ __macro(cudnnRNNForwardInferenceEx); -CUDNN_DNN_ROUTINE_EACH_AFTER_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) +CUDNN_DNN_ROUTINE_EACH_AFTER_R72(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) #endif #if CUDNN_VERSION >= 7401 From 02c10ca92bde5661aeae9a48bc35419263b08a4c Mon Sep 17 00:00:00 2001 From: GaoWei8 Date: Wed, 16 Sep 2020 10:26:17 +0000 Subject: [PATCH 04/12] polish codes --- paddle/fluid/platform/dynload/cudnn.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/paddle/fluid/platform/dynload/cudnn.h b/paddle/fluid/platform/dynload/cudnn.h index 131781ef76fc0..fba41417648ba 100644 --- a/paddle/fluid/platform/dynload/cudnn.h +++ b/paddle/fluid/platform/dynload/cudnn.h @@ -181,16 +181,16 @@ CUDNN_DNN_ROUTINE_EACH_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) #endif #if CUDNN_VERSION >= 7201 -#define CUDNN_DNN_ROUTINE_EACH_AFTER_R72(__macro) \ - __macro(cudnnCreateRNNDataDescriptor); \ - __macro(cudnnDestroyRNNDataDescriptor); \ - __macro(cudnnSetRNNDataDescriptor); \ - __macro(cudnnRNNForwardTrainingEx); \ - __macro(cudnnSetRNNPaddingMode); \ - __macro(cudnnRNNBackwardDataEx); \ - __macro(cudnnRNNBackwardWeightsEx); \ +#define CUDNN_DNN_ROUTINE_EACH_AFTER_TWO_R7(__macro) \ + __macro(cudnnCreateRNNDataDescriptor); \ + __macro(cudnnDestroyRNNDataDescriptor); \ + __macro(cudnnSetRNNDataDescriptor); \ + __macro(cudnnSetRNNPaddingMode); \ + __macro(cudnnRNNForwardTrainingEx); \ + __macro(cudnnRNNBackwardDataEx); \ + __macro(cudnnRNNBackwardWeightsEx); \ __macro(cudnnRNNForwardInferenceEx); -CUDNN_DNN_ROUTINE_EACH_AFTER_R72(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) +CUDNN_DNN_ROUTINE_EACH_AFTER_TWO_R7(DECLARE_DYNAMIC_LOAD_CUDNN_WRAP) #endif #if CUDNN_VERSION >= 7401 From c04e2e85c522f14f388fdafd211a556dbbb5e865 Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Mon, 21 Sep 2020 09:18:44 +0000 Subject: [PATCH 05/12] Add import, test=develop --- .../dygraph_to_static/variable_trans_func.py | 4 +-- python/paddle/jit/__init__.py | 4 +++ .../paddle/jit/dygraph_to_static/__init__.py | 23 ++++++++++++++++ .../dygraph_to_static/convert_operators.py | 25 ++++++++++++++++++ .../dygraph_to_static/variable_trans_func.py | 26 +++++++++++++++++++ python/setup.py.in | 1 + 6 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 python/paddle/jit/dygraph_to_static/__init__.py create mode 100644 python/paddle/jit/dygraph_to_static/convert_operators.py create mode 100644 python/paddle/jit/dygraph_to_static/variable_trans_func.py diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py b/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py index bc2851b630c1a..a7d7d55d7a001 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py @@ -22,8 +22,8 @@ from paddle.fluid.layer_helper import LayerHelper __all__ = [ - 'to_static_variable_gast_node', 'create_static_variable_gast_node', - 'data_layer_not_check' + 'create_fill_constant_node', 'create_static_variable_gast_node', + 'data_layer_not_check', 'to_static_variable', 'to_static_variable_gast_node' ] diff --git a/python/paddle/jit/__init__.py b/python/paddle/jit/__init__.py index d04a65ad6ea99..1d189dedd2276 100644 --- a/python/paddle/jit/__init__.py +++ b/python/paddle/jit/__init__.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import print_function + from ..fluid.dygraph.jit import save #DEFINE_ALIAS from ..fluid.dygraph.jit import load #DEFINE_ALIAS from ..fluid.dygraph.jit import TracedLayer #DEFINE_ALIAS @@ -21,6 +23,8 @@ from ..fluid.dygraph import ProgramTranslator #DEFINE_ALIAS from ..fluid.dygraph.io import TranslatedLayer #DEFINE_ALIAS +from . import dygraph_to_static + __all__ = [ 'save', 'load', 'TracedLayer', 'to_static', 'ProgramTranslator', 'TranslatedLayer', 'set_code_level', 'set_verbosity' diff --git a/python/paddle/jit/dygraph_to_static/__init__.py b/python/paddle/jit/dygraph_to_static/__init__.py new file mode 100644 index 0000000000000..b993507c837f6 --- /dev/null +++ b/python/paddle/jit/dygraph_to_static/__init__.py @@ -0,0 +1,23 @@ +# Copyright (c) 2020 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 __future__ import print_function + +from . import convert_operators + +from . import variable_trans_func +from .variable_trans_func import * + +__all__ = [] +__all__ += variable_trans_func.__all__ diff --git a/python/paddle/jit/dygraph_to_static/convert_operators.py b/python/paddle/jit/dygraph_to_static/convert_operators.py new file mode 100644 index 0000000000000..2b6f67212e53d --- /dev/null +++ b/python/paddle/jit/dygraph_to_static/convert_operators.py @@ -0,0 +1,25 @@ +# Copyright (c) 2020 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 __future__ import print_function + +from ...fluid.dygraph.dygraph_to_static.convert_operators import cast_bool_if_necessary #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_assert #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_len #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_and #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_not #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_or #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_print #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_dtype #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_shape #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_while_loop #DEFINE_ALIAS diff --git a/python/paddle/jit/dygraph_to_static/variable_trans_func.py b/python/paddle/jit/dygraph_to_static/variable_trans_func.py new file mode 100644 index 0000000000000..08c057934a501 --- /dev/null +++ b/python/paddle/jit/dygraph_to_static/variable_trans_func.py @@ -0,0 +1,26 @@ +# Copyright (c) 2020 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 __future__ import print_function + +from ...fluid.dygraph.dygraph_to_static.variable_trans_func import create_fill_constant_node #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.variable_trans_func import create_static_variable_gast_node #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.variable_trans_func import data_layer_not_check #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.variable_trans_func import to_static_variable #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.variable_trans_func import to_static_variable_gast_node #DEFINE_ALIAS + +__all__ = [ + 'create_fill_constant_node', 'create_static_variable_gast_node', + 'data_layer_not_check', 'to_static_variable', 'to_static_variable_gast_node' +] diff --git a/python/setup.py.in b/python/setup.py.in index 773166400347a..117c24bd2d762 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -155,6 +155,7 @@ packages=['paddle', 'paddle.distributed.fleet.utils', 'paddle.framework', 'paddle.jit', + 'paddle.jit.dygraph_to_static', 'paddle.fluid', 'paddle.fluid.inference', 'paddle.fluid.dygraph', From bf447e60e31f6ca81e434320f321471aae5fe6e3 Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Mon, 21 Sep 2020 09:50:46 +0000 Subject: [PATCH 06/12] Change fluid.dygraph dy2stat APIs to paddle.jit, test=develop --- .../dygraph/dygraph_to_static/assert_transformer.py | 2 +- .../dygraph/dygraph_to_static/cast_transformer.py | 2 +- .../dygraph/dygraph_to_static/ifelse_transformer.py | 4 ++-- .../dygraph/dygraph_to_static/list_transformer.py | 4 ++-- .../dygraph/dygraph_to_static/logical_transformer.py | 2 +- .../dygraph/dygraph_to_static/loop_transformer.py | 2 +- .../dygraph/dygraph_to_static/print_transformer.py | 2 +- .../dygraph_to_static/tensor_shape_transformer.py | 2 +- .../paddle/fluid/dygraph/dygraph_to_static/utils.py | 2 +- .../dygraph/dygraph_to_static/variable_trans_func.py | 6 +++--- .../dygraph_to_static/ifelse_simple_func.py | 4 ++-- .../unittests/dygraph_to_static/test_tensor_shape.py | 12 ++++++------ 12 files changed, 22 insertions(+), 22 deletions(-) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py index 73dba66d3fca4..bf51ed9391e38 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py @@ -37,7 +37,7 @@ def transform(self): def visit_Assert(self, node): convert_assert_node = gast.parse( - 'fluid.dygraph.dygraph_to_static.convert_operators.convert_assert({test}, {msg})'. + 'paddle.jit.dygraph_to_static.convert_operators.convert_assert({test}, {msg})'. format( test=ast_to_source_code(node.test), msg=ast_to_source_code(node.msg) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py index 71cb999eab0eb..d724638f59d1a 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py @@ -39,7 +39,7 @@ def visit_Call(self, node): func_str = ast_to_source_code(node.func).strip() if func_str in self._castable_type and len(node.args) > 0: args_str = ast_to_source_code(node.args[0]).strip() - new_func_str = "fluid.dygraph.dygraph_to_static.convert_operators.convert_var_dtype({}, '{}')".format( + new_func_str = "paddle.jit.dygraph_to_static.convert_operators.convert_var_dtype({}, '{}')".format( args_str, func_str) new_node = gast.parse(new_func_str).body[0].value return new_node diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py index 5b8e6d2a9bdf3..997c6cad76daf 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py @@ -310,8 +310,8 @@ def parse_cond_return(parent_vars_dict, if_vars_dict, else_vars_dict, After transformed, q and z are created in parent scope. For example, x, y = 5, 10 - q = fluid.dygraph.dygraph_to_static.variable_trans_func.data_layer_not_check(name='q', shape=[-1], dtype='float32') - z = fluid.dygraph.dygraph_to_static.variable_trans_func.data_layer_not_check(name='z', shape=[-1], dtype='float32') + q = paddle.jit.dygraph_to_static.variable_trans_func.data_layer_not_check(name='q', shape=[-1], dtype='float32') + z = paddle.jit.dygraph_to_static.variable_trans_func.data_layer_not_check(name='z', shape=[-1], dtype='float32') def true_func(x, y, q): x = x+1 diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py index 03b0de99071c2..de24fb16158b1 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py @@ -188,8 +188,8 @@ def _transform_slice_to_tensor_write(self, node): pass elif isinstance(slice_node, gast.Index): value_code = ast_to_source_code(node.value) - i = "fluid.layers.cast(" \ - "x=fluid.dygraph.dygraph_to_static.variable_trans_func.to_static_variable({})," \ + i = "paddle.cast(" \ + "x=paddle.jit.dygraph_to_static.variable_trans_func.to_static_variable({})," \ "dtype='int64')".format(ast_to_source_code(slice_node)) assign_code = "{} = fluid.layers.array_write(x={}, i={}, array={})" \ .format(target_name, value_code, i, target_name) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py index d7af786ad75c7..a12373da4783f 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py @@ -34,7 +34,7 @@ def visit_UnaryOp(self, node): self.generic_visit(node) if isinstance(node.op, gast.Not): arg = ast_to_source_code(node.operand) - new_node_str = "fluid.dygraph.dygraph_to_static.convert_operators.convert_logical_not({})".format( + new_node_str = "paddle.jit.dygraph_to_static.convert_operators.convert_logical_not({})".format( arg) # NOTE: gast.parse returns Module(body=[expr(value=...)]) new_node = gast.parse(new_node_str).body[0].value diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py index c66778992c25c..40b76e1421589 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py @@ -46,7 +46,7 @@ def create_while_node(condition_name, body_name, loop_var_names): # For example: loop_var_names = [a, b, foo.x], the type of `a` or `b` is gast.Name, # but the type of `foo.x` gast.Attribute. - while_func_name = "fluid.dygraph.dygraph_to_static.convert_operators.convert_while_loop" + while_func_name = "paddle.jit.dygraph_to_static.convert_operators.convert_while_loop" while_node_str = "[{}] = {}({}, {}, [{}])".format( ",".join(loop_var_names), while_func_name, condition_name, body_name, ",".join(loop_var_names)) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py index d555c8ed28f35..bfeeb3bd9bd18 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py @@ -57,6 +57,6 @@ def visit_Print(self, node): def _create_print_node(self, print_args): convert_print_func = gast.parse( - 'fluid.dygraph.dygraph_to_static.convert_operators.convert_print' + 'paddle.jit.dygraph_to_static.convert_operators.convert_print' ).body[0].value return gast.Call(func=convert_print_func, args=print_args, keywords=[]) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py index cad70f64c466f..33ff673067bf2 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py @@ -26,7 +26,7 @@ def create_convert_shape_node(var_shape_node): assert isinstance(var_shape_node, (gast.Attribute, gast.Subscript)) - convert_var_shape_func = "fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape" + convert_var_shape_func = "paddle.jit.dygraph_to_static.convert_operators.convert_var_shape" if isinstance(var_shape_node, gast.Attribute): api_shape_node = gast.Call( diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/utils.py b/python/paddle/fluid/dygraph/dygraph_to_static/utils.py index 86593dc24aa8b..3b690c91f972e 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/utils.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/utils.py @@ -922,7 +922,7 @@ def _build_var_len_assign_node(self): else: iter_var_name = ast_to_source_code(self.iter_node).strip() - convert_len_node_source_str = '{} = fluid.dygraph.dygraph_to_static.convert_operators.convert_len({})'.format( + convert_len_node_source_str = '{} = paddle.jit.dygraph_to_static.convert_operators.convert_len({})'.format( self.iter_var_len_name, iter_var_name) convert_len_node = gast.parse(convert_len_node_source_str).body[0] diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py b/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py index a7d7d55d7a001..44da4f8410fbc 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py @@ -74,20 +74,20 @@ def data_layer_not_check(name, shape, dtype='float32', lod_level=0): def to_static_variable_gast_node(name): - func_code = "{} = fluid.dygraph.dygraph_to_static.variable_trans_func\ + func_code = "{} = paddle.jit.dygraph_to_static.variable_trans_func\ .to_static_variable({})".format(name, name) return gast.parse(func_code).body[0] def create_static_variable_gast_node(name): - func_code = "{} = fluid.dygraph.dygraph_to_static.variable_trans_func\ + func_code = "{} = paddle.jit.dygraph_to_static.variable_trans_func\ .data_layer_not_check(name='{}', shape=[-1], dtype='float32')".format( name, name) return gast.parse(func_code).body[0] def create_fill_constant_node(name, value): - func_code = "{} = fluid.layers.fill_constant(shape=[1], ".format(name) + func_code = "{} = paddle.fill_constant(shape=[1], ".format(name) if isinstance(value, bool): func_code += "dtype='bool', value={})".format(value) return gast.parse(func_code).body[0] diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py index 08d832b64a213..a0a68447f34ae 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py @@ -59,9 +59,9 @@ def dyfunc_with_if_else3(x): # The var is created only in one of If.body or If.orelse node, and it used as gast.Load firstly after gast.If node. # The transformed code: """ - q = fluid.dygraph.dygraph_to_static.variable_trans_func. + q = paddle.jit.dygraph_to_static.variable_trans_func. data_layer_not_check(name='q', shape=[-1], dtype='float32') - z = fluid.dygraph.dygraph_to_static.variable_trans_func. + z = paddle.jit.dygraph_to_static.variable_trans_func. data_layer_not_check(name='z', shape=[-1], dtype='float32') def true_fn_0(q, x, y): diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py index 46d2b220414c4..9047aef234b0d 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py @@ -52,7 +52,7 @@ def dyfunc_tensor_shape_4(x): def dyfunc_tensor_shape_5(x): # `res = fluid.layers.reshape(x, shape=(-1, s))` to # `res = fluid.layers.reshape(x, shape=(-1, - # fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape(x)[0]))` + # paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]))` x = fluid.dygraph.to_variable(x) s = x.shape[0] res = fluid.layers.reshape(x, shape=(-1, s)) @@ -65,7 +65,7 @@ def dyfunc_with_if_1(x): x_shape_0 = x.shape[0] if x_shape_0 < 1: # `res.shape[0]` is transformed into - # `fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape(res)[0]` + # `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(res)[0]` if res.shape[0] > 1: res = fluid.layers.fill_constant( value=2, shape=x.shape, dtype="int32") @@ -89,7 +89,7 @@ def dyfunc_with_if_2(x): def dyfunc_with_for_1(x): x = fluid.dygraph.to_variable(x) res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") - # `x.shape[0]` is transformed into `fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x.shape[0]` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` for i in range(x.shape[0]): res += 1 return res @@ -100,7 +100,7 @@ def dyfunc_with_for_2(x): x_shape_0 = x.shape[0] res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") - # `x_shape_0` is transformed into `fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x_shape_0` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` for i in range(x_shape_0): res += 1 return res @@ -124,7 +124,7 @@ def dyfunc_with_for_3(x): def dyfunc_with_while_1(x): x = fluid.dygraph.to_variable(x) res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") - # `x.shape[0]` is transformed into `fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x.shape[0]` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` i = 1 while i < x.shape[0]: res += 1 @@ -137,7 +137,7 @@ def dyfunc_with_while_2(x): x_shape_0 = x.shape[0] res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") i = 1 - # `x_shape_0` is transformed into `fluid.dygraph.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x_shape_0` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` while i < x_shape_0: res += 1 i = i + 2 From 14306420e1c56e8086671ac2c97c40f9c59d0d5a Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Mon, 21 Sep 2020 10:51:19 +0000 Subject: [PATCH 07/12] Add convert_ifelse, test=develop --- .../fluid/dygraph/dygraph_to_static/ifelse_transformer.py | 4 ++-- python/paddle/jit/dygraph_to_static/convert_operators.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py index 997c6cad76daf..ef8871a5fc53f 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py @@ -460,7 +460,7 @@ def create_convert_ifelse_node(return_name_ids, false_func, is_if_expr=False): """ - Create `fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( + Create `paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( pred, true_fn, false_fn, true_args, false_args, return_vars)` to replace original `python if/else` statement. """ @@ -491,7 +491,7 @@ def create_name_nodes(name_ids): return_vars = create_name_nodes(return_name_ids) convert_ifelse_layer = gast.parse( - 'fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse(' + 'paddle.jit.dygraph_to_static.convert_operators.convert_ifelse(' '{pred}, {true_fn}, {false_fn}, {true_args}, {false_args}, {return_vars})'. format( pred=ast_to_source_code(pred), diff --git a/python/paddle/jit/dygraph_to_static/convert_operators.py b/python/paddle/jit/dygraph_to_static/convert_operators.py index 2b6f67212e53d..d8ba9318074a4 100644 --- a/python/paddle/jit/dygraph_to_static/convert_operators.py +++ b/python/paddle/jit/dygraph_to_static/convert_operators.py @@ -15,6 +15,7 @@ from ...fluid.dygraph.dygraph_to_static.convert_operators import cast_bool_if_necessary #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_assert #DEFINE_ALIAS +from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_ifelse #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_len #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_and #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_not #DEFINE_ALIAS From b33cb2acb1418b008cf75c4a70ab3b73d4e8c180 Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Mon, 21 Sep 2020 11:27:33 +0000 Subject: [PATCH 08/12] Modify convert functions, test=develop --- .../dygraph_to_static/call_transformer.py | 2 +- .../fluid/dygraph/dygraph_to_static/utils.py | 2 +- .../dygraph_to_static/ifelse_simple_func.py | 4 ++-- .../paddle/jit/dygraph_to_static/__init__.py | 4 ++++ .../jit/dygraph_to_static/convert_call_func.py | 18 ++++++++++++++++++ .../jit/dygraph_to_static/convert_operators.py | 7 +++++++ 6 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 python/paddle/jit/dygraph_to_static/convert_call_func.py diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py index 7fc72d42759b0..4b3940f233ee7 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py @@ -70,7 +70,7 @@ def visit_Call(self, node): if PDB_SET in func_str: return node - new_func_str = "fluid.dygraph.dygraph_to_static.convert_call({})".format( + new_func_str = "paddle.jit.dygraph_to_static.convert_call({})".format( func_str) new_func_ast = gast.parse(new_func_str).body[0].value node.func = new_func_ast diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/utils.py b/python/paddle/fluid/dygraph/dygraph_to_static/utils.py index 3b690c91f972e..18e60ed0e172e 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/utils.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/utils.py @@ -427,7 +427,7 @@ def remove_if_exit(filepath): os.remove(filepath) source = ast_to_source_code(ast_root) - import_fluid = "import paddle.fluid as fluid\n" + import_fluid = "import paddle\nimport paddle.fluid as fluid\n" source = import_fluid + source if six.PY2: diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py index a0a68447f34ae..f017eb2457691 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py @@ -77,8 +77,8 @@ def false_fn_0(q, x, y): n = x + 3 return q, x, y, z q, x, y, z = fluid.layers.cond(fluid.layers.mean(x)[0] < 5, lambda : - fluid.dygraph.dygraph_to_static.convert_call(true_fn_0)(q, x, y), - lambda : fluid.dygraph.dygraph_to_static.convert_call(false_fn_0)(q, + paddle.jit.dygraph_to_static.convert_call(true_fn_0)(q, x, y), + lambda : paddle.jit.dygraph_to_static.convert_call(false_fn_0)(q, x, y)) """ y = x + 1 diff --git a/python/paddle/jit/dygraph_to_static/__init__.py b/python/paddle/jit/dygraph_to_static/__init__.py index b993507c837f6..0b00979c73eb0 100644 --- a/python/paddle/jit/dygraph_to_static/__init__.py +++ b/python/paddle/jit/dygraph_to_static/__init__.py @@ -16,8 +16,12 @@ from . import convert_operators +from . import convert_call_func +from .convert_call_func import * + from . import variable_trans_func from .variable_trans_func import * __all__ = [] +__all__ += convert_call_func.__all__ __all__ += variable_trans_func.__all__ diff --git a/python/paddle/jit/dygraph_to_static/convert_call_func.py b/python/paddle/jit/dygraph_to_static/convert_call_func.py new file mode 100644 index 0000000000000..be2377608e36c --- /dev/null +++ b/python/paddle/jit/dygraph_to_static/convert_call_func.py @@ -0,0 +1,18 @@ +# Copyright (c) 2020 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 __future__ import print_function + +from ...fluid.dygraph.dygraph_to_static.convert_call_func import convert_call #DEFINE_ALIAS + +__all__ = ['convert_call'] diff --git a/python/paddle/jit/dygraph_to_static/convert_operators.py b/python/paddle/jit/dygraph_to_static/convert_operators.py index d8ba9318074a4..e77370f5a2ebf 100644 --- a/python/paddle/jit/dygraph_to_static/convert_operators.py +++ b/python/paddle/jit/dygraph_to_static/convert_operators.py @@ -24,3 +24,10 @@ from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_dtype #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_shape #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_while_loop #DEFINE_ALIAS + +__all__ = [ + 'cast_bool_if_necessary', 'convert_assert', 'convert_ifelse', 'convert_len', + 'convert_logical_and', 'convert_logical_not', 'convert_logical_or', + 'convert_logical_print', 'convert_var_dtype', 'convert_var_shape', + 'convert_while_loop' +] From ea2ad88f036d21fc492018076f81aaa771baedae Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Mon, 21 Sep 2020 11:38:28 +0000 Subject: [PATCH 09/12] Add function, test=develop --- .../fluid/dygraph/dygraph_to_static/logical_transformer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py index a12373da4783f..f0089ddbd4b49 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py @@ -67,7 +67,7 @@ def _create_bool_op_node(self, nodes, api_type): nodes = [pre_logic_node] + [post_logic_node] args = [ast_to_source_code(child) for child in nodes] - new_node_str = "fluid.dygraph.dygraph_to_static.convert_operators.convert_logical_{}(x={}, y={})".format( + new_node_str = "paddle.jit.dygraph_to_static.convert_operators.convert_logical_{}(x={}, y={})".format( api_type, args[0], args[1]) # NOTE: gast.parse return Module(body=[expr(...)]) new_node = gast.parse(new_node_str).body[0].value From 34735e96dde5d623ddde73b54a71ee9a55ddbfbd Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Mon, 21 Sep 2020 14:56:30 +0000 Subject: [PATCH 10/12] Fix unittest, test=develop --- .../dygraph_to_static/test_origin_info.py | 8 ++-- .../test_program_translator.py | 40 +++++++++---------- .../test_variable_trans_func.py | 10 ++--- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_origin_info.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_origin_info.py index 3f77e9ade285e..144b16873aa9b 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_origin_info.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_origin_info.py @@ -65,7 +65,7 @@ def set_test_func(self): self.func = simple_func def set_static_lineno(self): - self.static_abs_lineno_list = [2, 3, 4] + self.static_abs_lineno_list = [3, 4, 5] def set_dygraph_info(self): self.line_num = 3 @@ -149,7 +149,7 @@ def set_test_func(self): self.func = nested_func def set_static_lineno(self): - self.static_abs_lineno_list = [2, 4, 5, 6, 7] + self.static_abs_lineno_list = [3, 5, 6, 7, 8] def set_dygraph_info(self): self.line_num = 5 @@ -174,7 +174,7 @@ def set_test_func(self): self.func = decorated_func def set_static_lineno(self): - self.static_abs_lineno_list = [2, 3] + self.static_abs_lineno_list = [3, 4] def set_dygraph_info(self): self.line_num = 2 @@ -208,7 +208,7 @@ def set_test_func(self): self.func = decorated_func2 def set_static_lineno(self): - self.static_abs_lineno_list = [2, 3] + self.static_abs_lineno_list = [3, 4] def set_dygraph_info(self): self.line_num = 2 diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py index 873d9ecb53549..d1134e40a3802 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py @@ -63,11 +63,9 @@ def get_source_code(func): class StaticCode1(): # TODO: Transform return statement def dyfunc_with_if_else(x_v, label=None): - __return_1 = fluid.layers.fill_constant( - shape=[1], dtype='bool', value=False) - __return_0 = fluid.layers.fill_constant( - shape=[1], dtype='bool', value=False) - __return_value_init_0 = fluid.layers.fill_constant( + __return_1 = paddle.fill_constant(shape=[1], dtype='bool', value=False) + __return_0 = paddle.fill_constant(shape=[1], dtype='bool', value=False) + __return_value_init_0 = paddle.fill_constant( shape=[1], dtype='float64', value=0.0) __return_value_0 = __return_value_init_0 @@ -79,13 +77,13 @@ def false_fn_0(x_v): x_v = x_v + 1 return x_v - x_v = fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( + x_v = paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( fluid.layers.mean(x_v)[0] > 5, true_fn_0, false_fn_0, (x_v, ), (x_v, ), (x_v, )) def true_fn_1(__return_0, __return_value_0, label, x_v): loss = fluid.layers.cross_entropy(x_v, label) - __return_0 = fluid.layers.fill_constant( + __return_0 = paddle.fill_constant( shape=[1], dtype='bool', value=True) __return_value_0 = loss return __return_0, __return_value_0 @@ -94,13 +92,13 @@ def false_fn_1(__return_0, __return_value_0): return __return_0, __return_value_0 __return_0, __return_value_0 = ( - fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( + paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( label is not None, true_fn_1, false_fn_1, (__return_0, __return_value_0, label, x_v), (__return_0, __return_value_0), (__return_0, __return_value_0))) def true_fn_2(__return_1, __return_value_0, x_v): - __return_1 = fluid.layers.fill_constant( + __return_1 = paddle.fill_constant( shape=[1], dtype='bool', value=True) __return_value_0 = x_v return __return_1, __return_value_0 @@ -109,8 +107,8 @@ def false_fn_2(__return_1, __return_value_0): return __return_1, __return_value_0 __return_1, __return_value_0 = ( - fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( - fluid.dygraph.dygraph_to_static.convert_operators. + paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( + paddle.jit.dygraph_to_static.convert_operators. convert_logical_not(__return_0), true_fn_2, false_fn_2, (__return_1, __return_value_0, x_v), (__return_1, __return_value_0), (__return_1, __return_value_0))) @@ -120,11 +118,9 @@ def false_fn_2(__return_1, __return_value_0): class StaticCode2(): # TODO: Transform return statement def dyfunc_with_if_else(x_v, label=None): - __return_3 = fluid.layers.fill_constant( - shape=[1], dtype='bool', value=False) - __return_2 = fluid.layers.fill_constant( - shape=[1], dtype='bool', value=False) - __return_value_init_1 = fluid.layers.fill_constant( + __return_3 = paddle.fill_constant(shape=[1], dtype='bool', value=False) + __return_2 = paddle.fill_constant(shape=[1], dtype='bool', value=False) + __return_value_init_1 = paddle.fill_constant( shape=[1], dtype='float64', value=0.0) __return_value_1 = __return_value_init_1 @@ -136,13 +132,13 @@ def false_fn_3(x_v): x_v = x_v + 1 return x_v - x_v = fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( + x_v = paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( fluid.layers.mean(x_v)[0] > 5, true_fn_3, false_fn_3, (x_v, ), (x_v, ), (x_v, )) def true_fn_4(__return_2, __return_value_1, label, x_v): loss = fluid.layers.cross_entropy(x_v, label) - __return_2 = fluid.layers.fill_constant( + __return_2 = paddle.fill_constant( shape=[1], dtype='bool', value=True) __return_value_1 = loss return __return_2, __return_value_1 @@ -151,13 +147,13 @@ def false_fn_4(__return_2, __return_value_1): return __return_2, __return_value_1 __return_2, __return_value_1 = ( - fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( + paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( label is not None, true_fn_4, false_fn_4, (__return_2, __return_value_1, label, x_v), (__return_2, __return_value_1), (__return_2, __return_value_1))) def true_fn_5(__return_3, __return_value_1, x_v): - __return_3 = fluid.layers.fill_constant( + __return_3 = paddle.fill_constant( shape=[1], dtype='bool', value=True) __return_value_1 = x_v return __return_3, __return_value_1 @@ -166,8 +162,8 @@ def false_fn_5(__return_3, __return_value_1): return __return_3, __return_value_1 __return_3, __return_value_1 = ( - fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse( - fluid.dygraph.dygraph_to_static.convert_operators. + paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( + paddle.jit.dygraph_to_static.convert_operators. convert_logical_not(__return_2), true_fn_5, false_fn_5, (__return_3, __return_value_1, x_v), (__return_3, __return_value_1), (__return_3, __return_value_1))) diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_variable_trans_func.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_variable_trans_func.py index e7632a0ba8d52..e79209cb538c0 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_variable_trans_func.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_variable_trans_func.py @@ -51,24 +51,24 @@ def test_feed_mismatch_shape(self): class TestVariableTransFunc(unittest.TestCase): def test_create_fill_constant_node(self): node = create_fill_constant_node("a", 1.0) - source = "a = fluid.layers.fill_constant(shape=[1], dtype='float64', value=1.0)" + source = "a = paddle.fill_constant(shape=[1], dtype='float64', value=1.0)" self.assertEqual(ast_to_source_code(node).strip(), source) node = create_fill_constant_node("b", True) - source = "b = fluid.layers.fill_constant(shape=[1], dtype='bool', value=True)" + source = "b = paddle.fill_constant(shape=[1], dtype='bool', value=True)" self.assertEqual(ast_to_source_code(node).strip(), source) if six.PY2: node = create_fill_constant_node("c", 214) - source = "c = fluid.layers.fill_constant(shape=[1], dtype='int32', value=214)" + source = "c = paddle.fill_constant(shape=[1], dtype='int32', value=214)" self.assertEqual(ast_to_source_code(node).strip(), source) node = create_fill_constant_node("d", long(10086)) - source = "d = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10086)" + source = "d = paddle.fill_constant(shape=[1], dtype='int64', value=10086)" self.assertEqual(ast_to_source_code(node).strip(), source) else: node = create_fill_constant_node("c", 4293) - source = "c = fluid.layers.fill_constant(shape=[1], dtype='int64', value=4293)" + source = "c = paddle.fill_constant(shape=[1], dtype='int64', value=4293)" self.assertEqual(ast_to_source_code(node).strip(), source) self.assertIsNone(create_fill_constant_node("e", None)) From c2a5f5a87c11595cea0fc627b57665a147a531f4 Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Sun, 27 Sep 2020 06:19:11 +0000 Subject: [PATCH 11/12] Temp commit --- .../fluid/dygraph/dygraph_to_static/assert_transformer.py | 3 +-- .../fluid/dygraph/dygraph_to_static/call_transformer.py | 3 +-- .../fluid/dygraph/dygraph_to_static/cast_transformer.py | 2 +- .../fluid/dygraph/dygraph_to_static/ifelse_transformer.py | 8 ++++---- .../fluid/dygraph/dygraph_to_static/list_transformer.py | 2 +- .../dygraph/dygraph_to_static/logical_transformer.py | 4 ++-- .../fluid/dygraph/dygraph_to_static/loop_transformer.py | 2 +- .../fluid/dygraph/dygraph_to_static/print_transformer.py | 3 +-- .../dygraph/dygraph_to_static/tensor_shape_transformer.py | 2 +- python/paddle/fluid/dygraph/dygraph_to_static/utils.py | 2 +- .../dygraph/dygraph_to_static/variable_trans_func.py | 6 +++--- .../unittests/dygraph_to_static/ifelse_simple_func.py | 8 ++++---- 12 files changed, 21 insertions(+), 24 deletions(-) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py index bf51ed9391e38..fe70fd1094f58 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/assert_transformer.py @@ -37,8 +37,7 @@ def transform(self): def visit_Assert(self, node): convert_assert_node = gast.parse( - 'paddle.jit.dygraph_to_static.convert_operators.convert_assert({test}, {msg})'. - format( + 'paddle.jit.dy2static.convert_assert({test}, {msg})'.format( test=ast_to_source_code(node.test), msg=ast_to_source_code(node.msg) if node.msg else "")).body[0].value diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py index 4b3940f233ee7..c2481d16825ec 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/call_transformer.py @@ -70,8 +70,7 @@ def visit_Call(self, node): if PDB_SET in func_str: return node - new_func_str = "paddle.jit.dygraph_to_static.convert_call({})".format( - func_str) + new_func_str = "paddle.jit.dy2static.convert_call({})".format(func_str) new_func_ast = gast.parse(new_func_str).body[0].value node.func = new_func_ast diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py index d724638f59d1a..1171b5dbdfa22 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/cast_transformer.py @@ -39,7 +39,7 @@ def visit_Call(self, node): func_str = ast_to_source_code(node.func).strip() if func_str in self._castable_type and len(node.args) > 0: args_str = ast_to_source_code(node.args[0]).strip() - new_func_str = "paddle.jit.dygraph_to_static.convert_operators.convert_var_dtype({}, '{}')".format( + new_func_str = "paddle.jit.dy2static.convert_var_dtype({}, '{}')".format( args_str, func_str) new_node = gast.parse(new_func_str).body[0].value return new_node diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py index ef8871a5fc53f..9c338546e2333 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py @@ -310,8 +310,8 @@ def parse_cond_return(parent_vars_dict, if_vars_dict, else_vars_dict, After transformed, q and z are created in parent scope. For example, x, y = 5, 10 - q = paddle.jit.dygraph_to_static.variable_trans_func.data_layer_not_check(name='q', shape=[-1], dtype='float32') - z = paddle.jit.dygraph_to_static.variable_trans_func.data_layer_not_check(name='z', shape=[-1], dtype='float32') + q = paddle.jit.dy2static.data_layer_not_check(name='q', shape=[-1], dtype='float32') + z = paddle.jit.dy2static.data_layer_not_check(name='z', shape=[-1], dtype='float32') def true_func(x, y, q): x = x+1 @@ -460,7 +460,7 @@ def create_convert_ifelse_node(return_name_ids, false_func, is_if_expr=False): """ - Create `paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( + Create `paddle.jit.dy2static.convert_ifelse( pred, true_fn, false_fn, true_args, false_args, return_vars)` to replace original `python if/else` statement. """ @@ -491,7 +491,7 @@ def create_name_nodes(name_ids): return_vars = create_name_nodes(return_name_ids) convert_ifelse_layer = gast.parse( - 'paddle.jit.dygraph_to_static.convert_operators.convert_ifelse(' + 'paddle.jit.dy2static.convert_ifelse(' '{pred}, {true_fn}, {false_fn}, {true_args}, {false_args}, {return_vars})'. format( pred=ast_to_source_code(pred), diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py index de24fb16158b1..9819f5fb72bbc 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/list_transformer.py @@ -189,7 +189,7 @@ def _transform_slice_to_tensor_write(self, node): elif isinstance(slice_node, gast.Index): value_code = ast_to_source_code(node.value) i = "paddle.cast(" \ - "x=paddle.jit.dygraph_to_static.variable_trans_func.to_static_variable({})," \ + "x=paddle.jit.dy2static.to_static_variable({})," \ "dtype='int64')".format(ast_to_source_code(slice_node)) assign_code = "{} = fluid.layers.array_write(x={}, i={}, array={})" \ .format(target_name, value_code, i, target_name) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py index f0089ddbd4b49..8f3690f26fc23 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/logical_transformer.py @@ -34,7 +34,7 @@ def visit_UnaryOp(self, node): self.generic_visit(node) if isinstance(node.op, gast.Not): arg = ast_to_source_code(node.operand) - new_node_str = "paddle.jit.dygraph_to_static.convert_operators.convert_logical_not({})".format( + new_node_str = "paddle.jit.dy2static.convert_logical_not({})".format( arg) # NOTE: gast.parse returns Module(body=[expr(value=...)]) new_node = gast.parse(new_node_str).body[0].value @@ -67,7 +67,7 @@ def _create_bool_op_node(self, nodes, api_type): nodes = [pre_logic_node] + [post_logic_node] args = [ast_to_source_code(child) for child in nodes] - new_node_str = "paddle.jit.dygraph_to_static.convert_operators.convert_logical_{}(x={}, y={})".format( + new_node_str = "paddle.jit.dy2static.convert_logical_{}(x={}, y={})".format( api_type, args[0], args[1]) # NOTE: gast.parse return Module(body=[expr(...)]) new_node = gast.parse(new_node_str).body[0].value diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py index 40b76e1421589..0b6c7c45b3804 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/loop_transformer.py @@ -46,7 +46,7 @@ def create_while_node(condition_name, body_name, loop_var_names): # For example: loop_var_names = [a, b, foo.x], the type of `a` or `b` is gast.Name, # but the type of `foo.x` gast.Attribute. - while_func_name = "paddle.jit.dygraph_to_static.convert_operators.convert_while_loop" + while_func_name = "paddle.jit.dy2static.convert_while_loop" while_node_str = "[{}] = {}({}, {}, [{}])".format( ",".join(loop_var_names), while_func_name, condition_name, body_name, ",".join(loop_var_names)) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py index c227c281bb154..9d1ec35764b09 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/print_transformer.py @@ -51,6 +51,5 @@ def visit_Print(self, node): def _create_print_node(self, print_args): convert_print_func = gast.parse( - 'paddle.jit.dygraph_to_static.convert_operators.convert_print' - ).body[0].value + 'paddle.jit.dy2static.convert_print').body[0].value return gast.Call(func=convert_print_func, args=print_args, keywords=[]) diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py b/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py index 33ff673067bf2..6cdf279962458 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/tensor_shape_transformer.py @@ -26,7 +26,7 @@ def create_convert_shape_node(var_shape_node): assert isinstance(var_shape_node, (gast.Attribute, gast.Subscript)) - convert_var_shape_func = "paddle.jit.dygraph_to_static.convert_operators.convert_var_shape" + convert_var_shape_func = "paddle.jit.dy2static.convert_var_shape" if isinstance(var_shape_node, gast.Attribute): api_shape_node = gast.Call( diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/utils.py b/python/paddle/fluid/dygraph/dygraph_to_static/utils.py index 18e60ed0e172e..7a234580712ac 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/utils.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/utils.py @@ -922,7 +922,7 @@ def _build_var_len_assign_node(self): else: iter_var_name = ast_to_source_code(self.iter_node).strip() - convert_len_node_source_str = '{} = paddle.jit.dygraph_to_static.convert_operators.convert_len({})'.format( + convert_len_node_source_str = '{} = paddle.jit.dy2static.convert_len({})'.format( self.iter_var_len_name, iter_var_name) convert_len_node = gast.parse(convert_len_node_source_str).body[0] diff --git a/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py b/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py index 44da4f8410fbc..8da7b40db4c6b 100644 --- a/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py +++ b/python/paddle/fluid/dygraph/dygraph_to_static/variable_trans_func.py @@ -74,13 +74,13 @@ def data_layer_not_check(name, shape, dtype='float32', lod_level=0): def to_static_variable_gast_node(name): - func_code = "{} = paddle.jit.dygraph_to_static.variable_trans_func\ - .to_static_variable({})".format(name, name) + func_code = "{} = paddle.jit.dy2static.to_static_variable({})".format(name, + name) return gast.parse(func_code).body[0] def create_static_variable_gast_node(name): - func_code = "{} = paddle.jit.dygraph_to_static.variable_trans_func\ + func_code = "{} = paddle.jit.dy2static\ .data_layer_not_check(name='{}', shape=[-1], dtype='float32')".format( name, name) return gast.parse(func_code).body[0] diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py index f017eb2457691..34d7b59a9b487 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/ifelse_simple_func.py @@ -59,9 +59,9 @@ def dyfunc_with_if_else3(x): # The var is created only in one of If.body or If.orelse node, and it used as gast.Load firstly after gast.If node. # The transformed code: """ - q = paddle.jit.dygraph_to_static.variable_trans_func. + q = paddle.jit.dy2static. data_layer_not_check(name='q', shape=[-1], dtype='float32') - z = paddle.jit.dygraph_to_static.variable_trans_func. + z = paddle.jit.dy2static. data_layer_not_check(name='z', shape=[-1], dtype='float32') def true_fn_0(q, x, y): @@ -77,8 +77,8 @@ def false_fn_0(q, x, y): n = x + 3 return q, x, y, z q, x, y, z = fluid.layers.cond(fluid.layers.mean(x)[0] < 5, lambda : - paddle.jit.dygraph_to_static.convert_call(true_fn_0)(q, x, y), - lambda : paddle.jit.dygraph_to_static.convert_call(false_fn_0)(q, + paddle.jit.dy2static.convert_call(true_fn_0)(q, x, y), + lambda : paddle.jit.dy2static.convert_call(false_fn_0)(q, x, y)) """ y = x + 1 From 57c02ed19d5fc1cdf3bbab787a815b4a869c5681 Mon Sep 17 00:00:00 2001 From: zhhsplendid Date: Sun, 27 Sep 2020 09:06:47 +0000 Subject: [PATCH 12/12] Modify paths, test=develop --- .../test_program_translator.py | 42 ++++++++----------- .../dygraph_to_static/test_tensor_shape.py | 12 +++--- python/paddle/jit/__init__.py | 2 +- .../__init__.py | 2 + .../convert_call_func.py | 0 .../convert_operators.py | 2 +- .../variable_trans_func.py | 0 7 files changed, 28 insertions(+), 32 deletions(-) rename python/paddle/jit/{dygraph_to_static => dy2static}/__init__.py (92%) rename python/paddle/jit/{dygraph_to_static => dy2static}/convert_call_func.py (100%) rename python/paddle/jit/{dygraph_to_static => dy2static}/convert_operators.py (96%) rename python/paddle/jit/{dygraph_to_static => dy2static}/variable_trans_func.py (100%) diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py index a362b0c09bbd0..b308854dc09a1 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_program_translator.py @@ -78,7 +78,7 @@ def false_fn_0(x_v): x_v = x_v + 1 return x_v - x_v = paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( + x_v = paddle.jit.dy2static.convert_ifelse( fluid.layers.mean(x_v)[0] > 5, true_fn_0, false_fn_0, (x_v, ), (x_v, ), (x_v, )) @@ -92,11 +92,10 @@ def true_fn_1(__return_0, __return_value_0, label, x_v): def false_fn_1(__return_0, __return_value_0): return __return_0, __return_value_0 - __return_0, __return_value_0 = ( - paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( - label is not None, true_fn_1, false_fn_1, - (__return_0, __return_value_0, label, x_v), - (__return_0, __return_value_0), (__return_0, __return_value_0))) + __return_0, __return_value_0 = (paddle.jit.dy2static.convert_ifelse( + label is not None, true_fn_1, false_fn_1, + (__return_0, __return_value_0, label, x_v), + (__return_0, __return_value_0), (__return_0, __return_value_0))) def true_fn_2(__return_1, __return_value_0, x_v): __return_1 = paddle.fill_constant( @@ -107,12 +106,10 @@ def true_fn_2(__return_1, __return_value_0, x_v): def false_fn_2(__return_1, __return_value_0): return __return_1, __return_value_0 - __return_1, __return_value_0 = ( - paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( - paddle.jit.dygraph_to_static.convert_operators. - convert_logical_not(__return_0), true_fn_2, false_fn_2, - (__return_1, __return_value_0, x_v), - (__return_1, __return_value_0), (__return_1, __return_value_0))) + __return_1, __return_value_0 = (paddle.jit.dy2static.convert_ifelse( + paddle.jit.dy2static.convert_logical_not(__return_0), true_fn_2, + false_fn_2, (__return_1, __return_value_0, x_v), + (__return_1, __return_value_0), (__return_1, __return_value_0))) return __return_value_0 @@ -133,7 +130,7 @@ def false_fn_3(x_v): x_v = x_v + 1 return x_v - x_v = paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( + x_v = paddle.jit.dy2static.convert_ifelse( fluid.layers.mean(x_v)[0] > 5, true_fn_3, false_fn_3, (x_v, ), (x_v, ), (x_v, )) @@ -147,11 +144,10 @@ def true_fn_4(__return_2, __return_value_1, label, x_v): def false_fn_4(__return_2, __return_value_1): return __return_2, __return_value_1 - __return_2, __return_value_1 = ( - paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( - label is not None, true_fn_4, false_fn_4, - (__return_2, __return_value_1, label, x_v), - (__return_2, __return_value_1), (__return_2, __return_value_1))) + __return_2, __return_value_1 = (paddle.jit.dy2static.convert_ifelse( + label is not None, true_fn_4, false_fn_4, + (__return_2, __return_value_1, label, x_v), + (__return_2, __return_value_1), (__return_2, __return_value_1))) def true_fn_5(__return_3, __return_value_1, x_v): __return_3 = paddle.fill_constant( @@ -162,12 +158,10 @@ def true_fn_5(__return_3, __return_value_1, x_v): def false_fn_5(__return_3, __return_value_1): return __return_3, __return_value_1 - __return_3, __return_value_1 = ( - paddle.jit.dygraph_to_static.convert_operators.convert_ifelse( - paddle.jit.dygraph_to_static.convert_operators. - convert_logical_not(__return_2), true_fn_5, false_fn_5, - (__return_3, __return_value_1, x_v), - (__return_3, __return_value_1), (__return_3, __return_value_1))) + __return_3, __return_value_1 = (paddle.jit.dy2static.convert_ifelse( + paddle.jit.dy2static.convert_logical_not(__return_2), true_fn_5, + false_fn_5, (__return_3, __return_value_1, x_v), + (__return_3, __return_value_1), (__return_3, __return_value_1))) return __return_value_1 diff --git a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py index 9047aef234b0d..de9554a2d4a53 100644 --- a/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py +++ b/python/paddle/fluid/tests/unittests/dygraph_to_static/test_tensor_shape.py @@ -52,7 +52,7 @@ def dyfunc_tensor_shape_4(x): def dyfunc_tensor_shape_5(x): # `res = fluid.layers.reshape(x, shape=(-1, s))` to # `res = fluid.layers.reshape(x, shape=(-1, - # paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]))` + # paddle.jit.dy2static.convert_var_shape(x)[0]))` x = fluid.dygraph.to_variable(x) s = x.shape[0] res = fluid.layers.reshape(x, shape=(-1, s)) @@ -65,7 +65,7 @@ def dyfunc_with_if_1(x): x_shape_0 = x.shape[0] if x_shape_0 < 1: # `res.shape[0]` is transformed into - # `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(res)[0]` + # `paddle.jit.dy2static.convert_var_shape(res)[0]` if res.shape[0] > 1: res = fluid.layers.fill_constant( value=2, shape=x.shape, dtype="int32") @@ -89,7 +89,7 @@ def dyfunc_with_if_2(x): def dyfunc_with_for_1(x): x = fluid.dygraph.to_variable(x) res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") - # `x.shape[0]` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x.shape[0]` is transformed into `paddle.jit.dy2static.convert_var_shape(x)[0]` for i in range(x.shape[0]): res += 1 return res @@ -100,7 +100,7 @@ def dyfunc_with_for_2(x): x_shape_0 = x.shape[0] res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") - # `x_shape_0` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x_shape_0` is transformed into `paddle.jit.dy2static.convert_var_shape(x)[0]` for i in range(x_shape_0): res += 1 return res @@ -124,7 +124,7 @@ def dyfunc_with_for_3(x): def dyfunc_with_while_1(x): x = fluid.dygraph.to_variable(x) res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") - # `x.shape[0]` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x.shape[0]` is transformed into `paddle.jit.dy2static.convert_var_shape(x)[0]` i = 1 while i < x.shape[0]: res += 1 @@ -137,7 +137,7 @@ def dyfunc_with_while_2(x): x_shape_0 = x.shape[0] res = fluid.layers.fill_constant(value=0, shape=[1], dtype="int32") i = 1 - # `x_shape_0` is transformed into `paddle.jit.dygraph_to_static.convert_operators.convert_var_shape(x)[0]` + # `x_shape_0` is transformed into `paddle.jit.dy2static.convert_var_shape(x)[0]` while i < x_shape_0: res += 1 i = i + 2 diff --git a/python/paddle/jit/__init__.py b/python/paddle/jit/__init__.py index 1d189dedd2276..9e40cb18a00ea 100644 --- a/python/paddle/jit/__init__.py +++ b/python/paddle/jit/__init__.py @@ -23,7 +23,7 @@ from ..fluid.dygraph import ProgramTranslator #DEFINE_ALIAS from ..fluid.dygraph.io import TranslatedLayer #DEFINE_ALIAS -from . import dygraph_to_static +from . import dy2static __all__ = [ 'save', 'load', 'TracedLayer', 'to_static', 'ProgramTranslator', diff --git a/python/paddle/jit/dygraph_to_static/__init__.py b/python/paddle/jit/dy2static/__init__.py similarity index 92% rename from python/paddle/jit/dygraph_to_static/__init__.py rename to python/paddle/jit/dy2static/__init__.py index 0b00979c73eb0..239b554180b1b 100644 --- a/python/paddle/jit/dygraph_to_static/__init__.py +++ b/python/paddle/jit/dy2static/__init__.py @@ -15,6 +15,7 @@ from __future__ import print_function from . import convert_operators +from .convert_operators import * from . import convert_call_func from .convert_call_func import * @@ -23,5 +24,6 @@ from .variable_trans_func import * __all__ = [] +__all__ += convert_operators.__all__ __all__ += convert_call_func.__all__ __all__ += variable_trans_func.__all__ diff --git a/python/paddle/jit/dygraph_to_static/convert_call_func.py b/python/paddle/jit/dy2static/convert_call_func.py similarity index 100% rename from python/paddle/jit/dygraph_to_static/convert_call_func.py rename to python/paddle/jit/dy2static/convert_call_func.py diff --git a/python/paddle/jit/dygraph_to_static/convert_operators.py b/python/paddle/jit/dy2static/convert_operators.py similarity index 96% rename from python/paddle/jit/dygraph_to_static/convert_operators.py rename to python/paddle/jit/dy2static/convert_operators.py index e77370f5a2ebf..89df1d0aa77bd 100644 --- a/python/paddle/jit/dygraph_to_static/convert_operators.py +++ b/python/paddle/jit/dy2static/convert_operators.py @@ -28,6 +28,6 @@ __all__ = [ 'cast_bool_if_necessary', 'convert_assert', 'convert_ifelse', 'convert_len', 'convert_logical_and', 'convert_logical_not', 'convert_logical_or', - 'convert_logical_print', 'convert_var_dtype', 'convert_var_shape', + 'convert_print', 'convert_var_dtype', 'convert_var_shape', 'convert_while_loop' ] diff --git a/python/paddle/jit/dygraph_to_static/variable_trans_func.py b/python/paddle/jit/dy2static/variable_trans_func.py similarity index 100% rename from python/paddle/jit/dygraph_to_static/variable_trans_func.py rename to python/paddle/jit/dy2static/variable_trans_func.py