41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
|
|
"""
|
||
|
|
Copyright (C) 2018-2020 Intel Corporation
|
||
|
|
|
||
|
|
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.
|
||
|
|
"""
|
||
|
|
|
||
|
|
#! [complex_abs:transformation]
|
||
|
|
import numpy as np
|
||
|
|
|
||
|
|
from extensions.ops.elementwise import Pow
|
||
|
|
from extensions.ops.ReduceOps import ReduceSum
|
||
|
|
from mo.front.common.replacement import FrontReplacementOp
|
||
|
|
from mo.graph.graph import Graph, Node
|
||
|
|
from mo.ops.const import Const
|
||
|
|
|
||
|
|
|
||
|
|
class ComplexAbs(FrontReplacementOp):
|
||
|
|
op = "ComplexAbs"
|
||
|
|
enabled = True
|
||
|
|
|
||
|
|
def replace_op(self, graph: Graph, node: Node):
|
||
|
|
pow_2 = Const(graph, {'value': np.float32(2.0)}).create_node()
|
||
|
|
reduce_axis = Const(graph, {'value': np.int32(-1)}).create_node()
|
||
|
|
pow_0_5 = Const(graph, {'value': np.float32(0.5)}).create_node()
|
||
|
|
|
||
|
|
sq = Pow(graph, dict(name=node.in_node(0).name + '/sq', power=2.0)).create_node([node.in_node(0), pow_2])
|
||
|
|
sum = ReduceSum(graph, dict(name=sq.name + '/sum')).create_node([sq, reduce_axis])
|
||
|
|
sqrt = Pow(graph, dict(name=sum.name + '/sqrt', power=0.5)).create_node([sum, pow_0_5])
|
||
|
|
return [sqrt.id]
|
||
|
|
#! [complex_abs:transformation]
|