Coverage for mlprodict/onnxrt/ops_cpu/op_lp_normalization.py: 81%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

16 statements  

1# -*- encoding: utf-8 -*- 

2# pylint: disable=E0203,E1101,C0111 

3""" 

4@file 

5@brief Runtime operator. 

6""" 

7import numpy 

8from ._op import OpRunUnaryNum 

9 

10 

11class LpNormalization(OpRunUnaryNum): 

12 

13 atts = {'axis': -1, 'p': 2} 

14 

15 def __init__(self, onnx_node, desc=None, **options): 

16 OpRunUnaryNum.__init__(self, onnx_node, desc=desc, 

17 expected_attributes=LpNormalization.atts, 

18 **options) 

19 

20 def _run(self, x): # pylint: disable=W0221 

21 norm = numpy.power(numpy.power(x, self.p).sum( 

22 axis=self.axis), 1. / self.p) 

23 norm = numpy.expand_dims(norm, self.axis) 

24 if self.inplaces.get(0, False): 

25 return self._run_inplace(x, norm) 

26 return (x / norm, ) 

27 

28 def _run_inplace(self, x, norm): 

29 x /= norm 

30 return (x, )