class_docstr: Interpreter interface for running TensorFlow Lite models.
  
  Models obtained from `TfLiteConverter` can be run in Python with
  `Interpreter`.
  
  As an example, lets generate a simple Keras model and convert it to TFLite
  (`TfLiteConverter` also supports other input formats with `from_saved_model`
  and `from_concrete_function`)
  
  >>> x = np.array([[1.], [2.]])
  >>> y = np.array([[2.], [4.]])
  >>> model = tf.keras.models.Sequential([
  ...           tf.keras.layers.Dropout(0.2),
  ...           tf.keras.layers.Dense(units=1, input_shape=[1])
  ...         ])
  >>> model.compile(optimizer='sgd', loss='mean_squared_error')
  >>> model.fit(x, y, epochs=1)
  >>> converter = tf.lite.TFLiteConverter.from_keras_model(model)
  >>> tflite_model = converter.convert()
  
  `tflite_model` can be saved to a file and loaded later, or directly into the
  `Interpreter`. Since TensorFlow Lite pre-plans tensor allocations to optimize
  inference, the user needs to call `allocate_tensors()` before any inference.
  
  >>> interpreter = tf.lite.Interpreter(model_content=tflite_model)
  >>> interpreter.allocate_tensors()  # Needed before execution!
  
  Sample execution:
  
  >>> output = interpreter.get_output_details()[0]  # Model has single output.
  >>> input = interpreter.get_input_details()[0]  # Model has single input.
  >>> input_data = tf.constant(1., shape=[1, 1])
  >>> interpreter.set_tensor(input['index'], input_data)
  >>> interpreter.invoke()
  >>> interpreter.get_tensor(output['index']).shape
  (1, 1)
  
  Use `get_signature_runner()` for a more user-friendly inference API.
class_docstr_tok: ["Interpreter","interface","for","running","TensorFlow","Lite","models",".","Models","obtained","from","`","TfLiteConverter","`","can","be","run","in","Python","with","`","Interpreter","`",".","As","an","example",",","lets","generate","a","simple","Keras","model","and","convert","it","to","TFLite","(","`","TfLiteConverter","`","also","supports","other","input","formats","with","`","from_saved_model","`","and","`","from_concrete_function","`",")",">",">",">","x","=","np.array","(","[","[","1",".","]",",","[","2",".","]","]",")",">",">",">","y","=","np.array","(","[","[","2",".","]",",","[","4",".","]","]",")",">",">",">","model","=","tf.keras.models.Sequential","(","[","...","tf.keras.layers.Dropout","(","0.2",")",",","...","tf.keras.layers.Dense","(","units=1",",","input_shape=","[","1","]",")","...","]",")",">",">",">","model.compile","(","optimizer='sgd","'",",","loss='mean_squared_error","'",")",">",">",">","model.fit","(","x",",","y",",","epochs=1",")",">",">",">","converter","=","tf.lite.TFLiteConverter.from_keras_model","(","model",")",">",">",">","tflite_model","=","converter.convert","(",")","`","tflite_model","`","can","be","saved","to","a","file","and","loaded","later",",","or","directly","into","the","`","Interpreter","`",".","Since","TensorFlow","Lite","pre-plans","tensor","allocations","to","optimize","inference",",","the","user","needs","to","call","`","allocate_tensors","(",")","`","before","any","inference",".",">",">",">","interpreter","=","tf.lite.Interpreter","(","model_content=tflite_model",")",">",">",">","interpreter.allocate_tensors","(",")","#","Needed","before","execution","!","Sample","execution",":",">",">",">","output","=","interpreter.get_output_details","(",")","[","0","]","#","Model","has","single","output",".",">",">",">","input","=","interpreter.get_input_details","(",")","[","0","]","#","Model","has","single","input",".",">",">",">","input_data","=","tf.constant","(","1.",",","shape=","[","1",",","1","]",")",">",">",">","interpreter.set_tensor","(","input","[","'index","'","]",",","input_data",")",">",">",">","interpreter.invoke","(",")",">",">",">","interpreter.get_tensor","(","output","[","'index","'","]",")",".shape","(","1",",","1",")","Use","`","get_signature_runner","(",")","`","for","a","more","user-friendly","inference","API","."]
docstr: Returns true if there exist no numpy array buffers.
  
  This means it is safe to run tflite calls that may destroy internally
  allocated memory. This works, because in the wrapper.cc we have made
  the numpy base be the self._interpreter.
code: def _safe_to_run(self):
      """Returns true if there exist no numpy array buffers.
  
      This means it is safe to run tflite calls that may destroy internally
      allocated memory. This works, because in the wrapper.cc we have made
      the numpy base be the self._interpreter.
      """
      # NOTE, our tensor() call in cpp will use _interpreter as a base pointer.
      # If this environment is the only _interpreter, then the ref count should be
      # 2 (1 in self and 1 in temporary of sys.getrefcount).
      return sys.getrefcount(self._interpreter) == 2
  
imports: import ctypes
  import enum
  import os
  import platform
  import sys
  import numpy
label_desc: Use image node_id 4 for calling the Interpreter obj's underlying member method code with example usage: obj._safe_to_run() and returns: unknown