parameters: (model_path: str)
return_statement: return Model(softmax_node, [param_node], 'lenet')
docstring: Create a network on the fly from the source code using ngraph
docstring_summary: Create a network on the fly from the source code using ngraph
docstring_tokens: Create a network on the fly from the source code using ngraph
function: def create_ngraph_function(model_path: str) -> Model:
      """Create a network on the fly from the source code using ngraph"""
  
      def shape_and_length(shape: list) -> typing.Tuple[list, int]:
          length = reduce(lambda x, y: x * y, shape)
          return shape, length
  
      weights = np.fromfile(model_path, dtype=np.float32)
      weights_offset = 0
      padding_begin = padding_end = [0, 0]
  
      # input
      input_shape = [64, 1, 28, 28]
      param_node = openvino.runtime.op.Parameter(Type.f32, Shape(input_shape))
  
      # convolution 1
      conv_1_kernel_shape, conv_1_kernel_length = shape_and_length([20, 1, 5, 5])
      conv_1_kernel = openvino.runtime.op.Constant(Type.f32, Shape(conv_1_kernel_shape), weights[0:conv_1_kernel_length].tolist())
      weights_offset += conv_1_kernel_length
      conv_1_node = openvino.runtime.opset8.convolution(param_node, conv_1_kernel, [1, 1], padding_begin, padding_end, [1, 1])
  
      # add 1
      add_1_kernel_shape, add_1_kernel_length = shape_and_length([1, 20, 1, 1])
      add_1_kernel = openvino.runtime.op.Constant(Type.f32, Shape(add_1_kernel_shape),
                                                  weights[weights_offset : weights_offset + add_1_kernel_length])
      weights_offset += add_1_kernel_length
      add_1_node = openvino.runtime.opset8.add(conv_1_node, add_1_kernel)
  
      # maxpool 1
      maxpool_1_node = openvino.runtime.opset1.max_pool(add_1_node, [2, 2], padding_begin, padding_end, [2, 2], 'ceil')
  
      # convolution 2
      conv_2_kernel_shape, conv_2_kernel_length = shape_and_length([50, 20, 5, 5])
      conv_2_kernel = openvino.runtime.op.Constant(Type.f32, Shape(conv_2_kernel_shape),
                                                   weights[weights_offset : weights_offset + conv_2_kernel_length],
                                                   )
      weights_offset += conv_2_kernel_length
      conv_2_node = openvino.runtime.opset8.convolution(maxpool_1_node, conv_2_kernel, [1, 1], padding_begin, padding_end, [1, 1])
  
      # add 2
      add_2_kernel_shape, add_2_kernel_length = shape_and_length([1, 50, 1, 1])
      add_2_kernel = openvino.runtime.op.Constant(Type.f32, Shape(add_2_kernel_shape),
                                                  weights[weights_offset : weights_offset + add_2_kernel_length],
                                                  )
      weights_offset += add_2_kernel_length
      add_2_node = openvino.runtime.opset8.add(conv_2_node, add_2_kernel)
  
      # maxpool 2
      maxpool_2_node = openvino.runtime.opset1.max_pool(add_2_node, [2, 2], padding_begin, padding_end, [2, 2], 'ceil')
  
      # reshape 1
      reshape_1_dims, reshape_1_length = shape_and_length([2])
      # workaround to get int64 weights from float32 ndarray w/o unnecessary copying
      dtype_weights = np.frombuffer(
          weights[weights_offset : weights_offset + 2 * reshape_1_length],
          dtype=np.int64,
      )
      reshape_1_kernel = openvino.runtime.op.Constant(Type.i64, Shape(list(dtype_weights.shape)), dtype_weights)
      weights_offset += 2 * reshape_1_length
      reshape_1_node = openvino.runtime.opset8.reshape(maxpool_2_node, reshape_1_kernel, True)
  
      # matmul 1
      matmul_1_kernel_shape, matmul_1_kernel_length = shape_and_length([500, 800])
      matmul_1_kernel = openvino.runtime.op.Constant(Type.f32, Shape(matmul_1_kernel_shape),
                                                     weights[weights_offset : weights_offset + matmul_1_kernel_length],
                                                     )
      weights_offset += matmul_1_kernel_length
      matmul_1_node = openvino.runtime.opset8.matmul(reshape_1_node, matmul_1_kernel, False, True)
  
      # add 3
      add_3_kernel_shape, add_3_kernel_length = shape_and_length([1, 500])
      add_3_kernel = openvino.runtime.op.Constant(Type.f32, Shape(add_3_kernel_shape),
                                                  weights[weights_offset : weights_offset + add_3_kernel_length],
                                                  )
      weights_offset += add_3_kernel_length
      add_3_node = openvino.runtime.opset8.add(matmul_1_node, add_3_kernel)
  
      # ReLU
      relu_node = openvino.runtime.opset8.relu(add_3_node)
  
      # reshape 2
      reshape_2_kernel = openvino.runtime.op.Constant(Type.i64, Shape(list(dtype_weights.shape)), dtype_weights)
      reshape_2_node = openvino.runtime.opset8.reshape(relu_node, reshape_2_kernel, True)
  
      # matmul 2
      matmul_2_kernel_shape, matmul_2_kernel_length = shape_and_length([10, 500])
      matmul_2_kernel = openvino.runtime.op.Constant(Type.f32, Shape(matmul_2_kernel_shape),
                                                     weights[weights_offset : weights_offset + matmul_2_kernel_length],
                                                     )
      weights_offset += matmul_2_kernel_length
      matmul_2_node = openvino.runtime.opset8.matmul(reshape_2_node, matmul_2_kernel, False, True)
  
      # add 4
      add_4_kernel_shape, add_4_kernel_length = shape_and_length([1, 10])
      add_4_kernel = openvino.runtime.op.Constant(Type.f32, Shape(add_4_kernel_shape),
                                                  weights[weights_offset : weights_offset + add_4_kernel_length],
                                                  )
      weights_offset += add_4_kernel_length
      add_4_node = openvino.runtime.opset8.add(matmul_2_node, add_4_kernel)
  
      # softmax
      softmax_axis = 1
      softmax_node = openvino.runtime.opset8.softmax(add_4_node, softmax_axis)
  
      return Model(softmax_node, [param_node], 'lenet')
function_tokens: def create_ngraph_function ( model_path : str ) -> Model : def shape_and_length ( shape : list ) -> typing . Tuple [ list , int ] : length = reduce ( lambda x , y : x * y , shape ) return shape , length weights = np . fromfile ( model_path , dtype = np . float32 ) weights_offset = 0 padding_begin = padding_end = [ 0 , 0 ] # input input_shape = [ 64 , 1 , 28 , 28 ] param_node = openvino . runtime . op . Parameter ( Type . f32 , Shape ( input_shape ) ) # convolution 1 conv_1_kernel_shape , conv_1_kernel_length = shape_and_length ( [ 20 , 1 , 5 , 5 ] ) conv_1_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( conv_1_kernel_shape ) , weights [ 0 : conv_1_kernel_length ] . tolist ( ) ) weights_offset += conv_1_kernel_length conv_1_node = openvino . runtime . opset8 . convolution ( param_node , conv_1_kernel , [ 1 , 1 ] , padding_begin , padding_end , [ 1 , 1 ] ) # add 1 add_1_kernel_shape , add_1_kernel_length = shape_and_length ( [ 1 , 20 , 1 , 1 ] ) add_1_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( add_1_kernel_shape ) , weights [ weights_offset : weights_offset + add_1_kernel_length ] ) weights_offset += add_1_kernel_length add_1_node = openvino . runtime . opset8 . add ( conv_1_node , add_1_kernel ) # maxpool 1 maxpool_1_node = openvino . runtime . opset1 . max_pool ( add_1_node , [ 2 , 2 ] , padding_begin , padding_end , [ 2 , 2 ] , 'ceil' ) # convolution 2 conv_2_kernel_shape , conv_2_kernel_length = shape_and_length ( [ 50 , 20 , 5 , 5 ] ) conv_2_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( conv_2_kernel_shape ) , weights [ weights_offset : weights_offset + conv_2_kernel_length ] , ) weights_offset += conv_2_kernel_length conv_2_node = openvino . runtime . opset8 . convolution ( maxpool_1_node , conv_2_kernel , [ 1 , 1 ] , padding_begin , padding_end , [ 1 , 1 ] ) # add 2 add_2_kernel_shape , add_2_kernel_length = shape_and_length ( [ 1 , 50 , 1 , 1 ] ) add_2_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( add_2_kernel_shape ) , weights [ weights_offset : weights_offset + add_2_kernel_length ] , ) weights_offset += add_2_kernel_length add_2_node = openvino . runtime . opset8 . add ( conv_2_node , add_2_kernel ) # maxpool 2 maxpool_2_node = openvino . runtime . opset1 . max_pool ( add_2_node , [ 2 , 2 ] , padding_begin , padding_end , [ 2 , 2 ] , 'ceil' ) # reshape 1 reshape_1_dims , reshape_1_length = shape_and_length ( [ 2 ] ) # workaround to get int64 weights from float32 ndarray w/o unnecessary copying dtype_weights = np . frombuffer ( weights [ weights_offset : weights_offset + 2 * reshape_1_length ] , dtype = np . int64 , ) reshape_1_kernel = openvino . runtime . op . Constant ( Type . i64 , Shape ( list ( dtype_weights . shape ) ) , dtype_weights ) weights_offset += 2 * reshape_1_length reshape_1_node = openvino . runtime . opset8 . reshape ( maxpool_2_node , reshape_1_kernel , True ) # matmul 1 matmul_1_kernel_shape , matmul_1_kernel_length = shape_and_length ( [ 500 , 800 ] ) matmul_1_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( matmul_1_kernel_shape ) , weights [ weights_offset : weights_offset + matmul_1_kernel_length ] , ) weights_offset += matmul_1_kernel_length matmul_1_node = openvino . runtime . opset8 . matmul ( reshape_1_node , matmul_1_kernel , False , True ) # add 3 add_3_kernel_shape , add_3_kernel_length = shape_and_length ( [ 1 , 500 ] ) add_3_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( add_3_kernel_shape ) , weights [ weights_offset : weights_offset + add_3_kernel_length ] , ) weights_offset += add_3_kernel_length add_3_node = openvino . runtime . opset8 . add ( matmul_1_node , add_3_kernel ) # ReLU relu_node = openvino . runtime . opset8 . relu ( add_3_node ) # reshape 2 reshape_2_kernel = openvino . runtime . op . Constant ( Type . i64 , Shape ( list ( dtype_weights . shape ) ) , dtype_weights ) reshape_2_node = openvino . runtime . opset8 . reshape ( relu_node , reshape_2_kernel , True ) # matmul 2 matmul_2_kernel_shape , matmul_2_kernel_length = shape_and_length ( [ 10 , 500 ] ) matmul_2_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( matmul_2_kernel_shape ) , weights [ weights_offset : weights_offset + matmul_2_kernel_length ] , ) weights_offset += matmul_2_kernel_length matmul_2_node = openvino . runtime . opset8 . matmul ( reshape_2_node , matmul_2_kernel , False , True ) # add 4 add_4_kernel_shape , add_4_kernel_length = shape_and_length ( [ 1 , 10 ] ) add_4_kernel = openvino . runtime . op . Constant ( Type . f32 , Shape ( add_4_kernel_shape ) , weights [ weights_offset : weights_offset + add_4_kernel_length ] , ) weights_offset += add_4_kernel_length add_4_node = openvino . runtime . opset8 . add ( matmul_2_node , add_4_kernel ) # softmax softmax_axis = 1 softmax_node = openvino . runtime . opset8 . softmax ( add_4_node , softmax_axis ) return Model ( softmax_node , [ param_node ] , 'lenet' )