Coverage for mlprodict/onnxrt/ops_cpu/op_relu.py: 100%
26 statements
« prev ^ index » next coverage.py v7.1.0, created at 2023-02-04 02:28 +0100
« prev ^ index » next coverage.py v7.1.0, created at 2023-02-04 02:28 +0100
1# -*- encoding: utf-8 -*-
2# pylint: disable=E0203,E1101,C0111
3"""
4@file
5@brief Runtime operator.
6"""
7import numpy
8from ._op import OpRunUnaryNum
11class Relu(OpRunUnaryNum):
13 def __init__(self, onnx_node, desc=None, **options):
14 OpRunUnaryNum.__init__(self, onnx_node, desc=desc,
15 **options)
17 def _run(self, x, attributes=None, verbose=0, fLOG=None): # pylint: disable=W0221
18 if self.inplaces.get(0, False) and x.flags['WRITEABLE']:
19 return self._run_inplace(x)
20 return (numpy.maximum(x, 0), )
22 def _run_inplace(self, x):
23 return (numpy.maximum(x, 0, out=x), )
25 def to_python(self, inputs):
26 return ("import numpy", f"return numpy.maximum({inputs[0]}, 0)")
29class ThresholdedRelu(OpRunUnaryNum):
31 atts = {'alpha': 1.0}
33 def __init__(self, onnx_node, desc=None, **options):
34 OpRunUnaryNum.__init__(self, onnx_node, desc=desc,
35 expected_attributes=ThresholdedRelu.atts,
36 **options)
38 def _run(self, x, attributes=None, verbose=0, fLOG=None): # pylint: disable=W0221
39 if self.inplaces.get(0, False) and x.flags['WRITEABLE']:
40 return self._run_inplace(x)
41 return (numpy.maximum(x, self.alpha), )
43 def _run_inplace(self, x):
44 return (numpy.maximum(x, self.alpha, out=x), )
46 def to_python(self, inputs):
47 return ("import numpy", f"return numpy.maximum({inputs[0]}, alpha)")