diff --git a/x2paddle/convert.py b/x2paddle/convert.py index 8f634a9901f8b527fe2470c12af93ffaad1b980f..d7150b4918b3eda338d45ace60c29aaa14ba239a 100644 --- a/x2paddle/convert.py +++ b/x2paddle/convert.py @@ -48,7 +48,7 @@ def arg_parser(): def tf2paddle(model_path, save_dir): from x2paddle.decoder.tf_decoder import TFDecoder - from x2paddle.optimizer.tf_optimizer import TFGraphOptimizer + from x2paddle.op_mapper.tf_op_mapper import TFOpMapper print("Now translating model from tensorflow to paddle.") model = TFDecoder(model_path) diff --git a/x2paddle/core/op_mapper.py b/x2paddle/core/op_mapper.py new file mode 100644 index 0000000000000000000000000000000000000000..5b8049a8597a77bd35a75918dffc36648cf18f84 --- /dev/null +++ b/x2paddle/core/op_mapper.py @@ -0,0 +1,51 @@ +# Copyright (c) 2019 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 x2paddle.core.util import * +import os + + +class OpMapper(object): + def __init__(self): + self.paddle_codes = "" + self.tab = " " + self.net_code = list() + self.weights = dict() + + def add_codes(self, codes, indent=0): + if isinstance(codes, list): + for code in codes: + self.paddle_codes += (self.tab * indent + code + '\n') + elif isinstance(codes, str): + self.paddle_codes += (self.tab * indent + codes + '\n') + else: + raise Exception("Unknown type of codes") + + def add_heads(self): + self.add_codes("from paddle.fluid.initializer import Constant") + self.add_codes("from paddle.fluid.param_attr import ParamAttr") + self.add_codes("import paddle.fluid as fluid") + self.add_codes("") + + def save_inference_model(self): + print("Not Implement") + + def save_python_model(self, save_dir): + for name, param in self.weights.items(): + export_paddle_param(param, name, save_dir) + self.add_heads() + self.add_codes(self.net_code) + fp = open(os.path.join(save_dir, "model.py"), 'w') + fp.write(self.paddle_codes) + fp.close()