Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1""" 

2@file 

3@brief Loads runtime operator. 

4""" 

5 

6 

7def load_op(onnx_node, desc=None, options=None, variables=None, dtype=None): 

8 """ 

9 Sets up a class for a specific ONNX operator. 

10 

11 @param onnx_node :epkg:`onnx` node 

12 @param desc internal representation 

13 @param options runtime options 

14 @param variables registered variables created by previous operators 

15 @param dtype float computational type 

16 @return runtime class 

17 """ 

18 if desc is None: 

19 raise ValueError( # pragma: no cover 

20 "desc should not be None.") 

21 if options is None: 

22 provider = 'python' # pragma: no cover 

23 else: 

24 provider = options.get('provider', 'python') 

25 if 'provider' in options: 

26 options = options.copy() 

27 del options['provider'] 

28 if provider == 'python': 

29 from .ops_cpu import load_op as lo 

30 return lo(onnx_node, desc=desc, options=options) 

31 if provider == 'empty': 

32 from .ops_empty import load_op as lo 

33 return lo(onnx_node, desc=desc, options=options) 

34 if provider == 'onnxruntime2': 

35 from .ops_onnxruntime import load_op as lo 

36 return lo(onnx_node, desc=desc, options=options, # pylint: disable=E1123 

37 variables=variables, dtype=dtype) 

38 raise ValueError("Unable to handle provider '{}'.".format(provider))