Coverage for mlprodict/onnxrt/ops_cpu/op_flatten.py: 100%
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
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
1# -*- encoding: utf-8 -*-
2# pylint: disable=E0203,E1101,C0111
3"""
4@file
5@brief Runtime operator.
6"""
7import numpy
8from ._op import OpRunUnary
11class Flatten(OpRunUnary):
13 atts = {'axis': 1}
15 def __init__(self, onnx_node, desc=None, **options):
16 OpRunUnary.__init__(self, onnx_node, desc=desc,
17 expected_attributes=Flatten.atts,
18 **options)
20 def _run(self, x): # pylint: disable=W0221
21 i = self.axis
22 shape = x.shape
23 new_shape = ((1, -1) if i == 0 else
24 (numpy.prod(shape[:i]).astype(int), -1))
25 return (x.reshape(new_shape), )
27 def to_python(self, inputs):
28 lines = ['new_shape = ((1, -1) if axis == 0 else',
29 ' (numpy.prod({0}.shape[:axis]).astype(int), -1))'.format(
30 inputs[0]),
31 'return %s.reshape(new_shape)' % inputs[0]]
32 return 'import numpy', '\n'.join(lines)