[MO] IR Reader updates for support IR generated by PDPD FE (#7646)

* Add extender for LSTMSequence operation

* Update BOM file

* Update gather shape inference function to support 1D tensors as axis

* Refactor split_normalize_output function usage

* Update temporary Result operations processing

* Revert fake split output renaming

* Revert kaldi assign result removing

* Add assert for node type

* Update model-optimizer/mo/utils/ir_reader/layer_to_class.py

Fix comment

Co-authored-by: Evgenya Stepyreva <evgenya.stepyreva@intel.com>

* Update model-optimizer/extensions/ops/gather.py

Update axis value check.

Co-authored-by: Evgenya Stepyreva <evgenya.stepyreva@intel.com>

Co-authored-by: Evgenya Stepyreva <evgenya.stepyreva@intel.com>
This commit is contained in:
Anton ChetverikovandEvgenya Stepyreva authored and GitHub committed 2021-10-15 09:29:07 +03:00
1 parent a25668d106
commit 897cd09a5a
4 files changed
+20

No files matched your search

@@ -1049,6 +1049,7 @@ mo/utils/ir_reader/extenders/if_extender.py
mo/utils/ir_reader/extenders/interpolate_extender.py
mo/utils/ir_reader/extenders/loop_extender.py
mo/utils/ir_reader/extenders/LSTMCell_extender.py
mo/utils/ir_reader/extenders/LSTMSequence_extender.py
mo/utils/ir_reader/extenders/non_max_suppression_extender.py
mo/utils/ir_reader/extenders/non_zero_extender.py
mo/utils/ir_reader/extenders/pad_extender.py
+4
View File
@@ -52,6 +52,10 @@ class Gather(Op):
indices_shape = node.in_port(1).data.get_shape()
assert indices_shape is not None
axis = node.in_port(2).data.get_value()
# axis of Gather could be accepted as both scalar and 1D tensor
if isinstance(axis, np.ndarray):
axis = axis.item()
assert axis is not None, 'axis input is undefined'
assert -len(data_shape) <= axis < len(data_shape), \
@@ -0,0 +1,13 @@
# Copyright (C) 2018-2021 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
from mo.utils.graph import Node
from mo.utils.ir_reader.extender import Extender
class LSTMSequence_extender(Extender):
op = 'LSTMSequence'
@staticmethod
def extend(op: Node):
op['infer'] = Extender.use_shapes_from_ir
@@ -345,6 +345,8 @@ def copy_graph_with_ops(graph: Graph) -> Graph:
log.warning('Operation {} is not found in MO operations, please check it! '
'Simple shape infer function is used'.format(op_type))
node = Op(new_graph, op.attrs()).create_node()
assert 'type' in node, 'Operation {} have no `type` attribute.'.format(node.soft_get('name'))
node['op'] = node.type
node['infer'] = Extender.use_shapes_from_ir
if 'ir_data_attrs' in op:
node['IE'] = [('layer',