diff --git a/x2paddle/core/emitter.py b/x2paddle/core/emitter.py new file mode 100644 index 0000000000000000000000000000000000000000..613454bf7280dec9bcd3ecbc0c9d015fc89e5ba8 --- /dev/null +++ b/x2paddle/core/emitter.py @@ -0,0 +1,24 @@ +# 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. + + +class Emitter(object): + def __init__(self): + print("Nothing done") + + def save_inference_model(self): + print("Not Implement") + + def save_python_code(self): + print("Not Implement") diff --git a/x2paddle/core/graph.py b/x2paddle/core/graph.py index 1ec62280d6fac87deca91a2eacaaa8bd7a866cac..3f28e90dd5124935f781dcfba7f20fa4fc4a8d66 100644 --- a/x2paddle/core/graph.py +++ b/x2paddle/core/graph.py @@ -21,10 +21,8 @@ class GraphNode(object): self.outputs = list() self.layer = layer - if layer_name is not None: - self.layer_name = layer_name - else: - self.layer_name = layer.name + assert layer_name is not None, "layer_name for GraphNode should not be None" + self.layer_name = layer_name def __hash__(self): return hash(self.layer.name) @@ -70,6 +68,8 @@ class Graph(object): num_inputs[node.layer_name] -= 1 if num_inputs[node.layer_name] == 0: self.topo_sort.append(node.layer_name) + for i, tmp in enumerate(self.topo_sort): + print(tmp) def get_node(self, name): if name not in self.node_map: diff --git a/x2paddle/emitter/tf_emitter.py b/x2paddle/emitter/tf_emitter.py index a028662d70d6814266a52ccc6826e640c7671b7e..3968cd112489ad584f07fd624aec8f38d7e6a2ef 100644 --- a/x2paddle/emitter/tf_emitter.py +++ b/x2paddle/emitter/tf_emitter.py @@ -11,3 +11,7 @@ # 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.parser import TFGraph + + diff --git a/x2paddle/optimizer/tf_optimizer.py b/x2paddle/optimizer/tf_optimizer.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0d45a6200dede038fc9d76d411a8e24ce7c73237 100644 --- a/x2paddle/optimizer/tf_optimizer.py +++ b/x2paddle/optimizer/tf_optimizer.py @@ -0,0 +1,21 @@ +# 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. + +# TODO useless node remove + +# TODO identity node remove + +# TODO subgraph optimize + +# TODO compute optimize diff --git a/x2paddle/parser/tf_parser.py b/x2paddle/parser/tf_parser.py index 21d62a6aef665c4867e9e069b3540485bfe02614..5db5055372f47356b23cac7bf3307a4848f95c3c 100644 --- a/x2paddle/parser/tf_parser.py +++ b/x2paddle/parser/tf_parser.py @@ -19,7 +19,10 @@ import copy class TFGraphNode(GraphNode): def __init__(self, layer, layer_name=None): - super(TFGraphNode, self).__init__(layer, layer_name) + if layer_name is None: + super(TFGraphNode, self).__init__(layer, layer.name) + else: + super(TFGraphNode, self).__init__(layer, layer_name) self.layer_type = layer.op