Source code for mlprodict.onnxrt.ops_cpu.op_transpose

# -*- encoding: utf-8 -*-
# pylint: disable=E0203,E1101,C0111
"""
Runtime operator.


:githublink:`%|py|7`
"""
import numpy
from ._op import OpRunUnaryNum


[docs]class Transpose(OpRunUnaryNum): atts = {'perm': []}
[docs] def __init__(self, onnx_node, desc=None, **options): OpRunUnaryNum.__init__(self, onnx_node, desc=desc, expected_attributes=Transpose.atts, **options) self.perm_ = None if len(self.perm) == 0 else self.perm
[docs] def _run(self, data): # pylint: disable=W0221 if self.perm_ is None: return (numpy.transpose(data), ) return (numpy.transpose(data, axes=self.perm_), )
[docs] def _infer_shapes(self, x): # pylint: disable=W0221 return (x.transpose(perm=self.perm), )
[docs] def to_python(self, inputs): """ Returns a python code equivalent to this operator. :param inputs: inputs name :return: imports, python code, both as strings :githublink:`%|py|35` """ lines = [ "if perm is None:", " return numpy.transpose(%s)" % inputs[0], "return numpy.transpose(%s, axes=perm)" % inputs[0] ] return "import numpy", "\n".join(lines)