Ver fuente en GitHub

Interfaz de intérprete para modelos de TensorFlow Lite.

Ver alias

Compat alias para la migración

Ver Guía de migración para más detalles.

tf.compat.v1.lite.Interpreter

tf.lite.Interpreter(
    model_path=None, model_content=None, experimental_delegates=None,
    num_threads=None)

Esto hace que el intérprete de TensorFlow Lite sea accesible en Python. Es posible utilizar este intérprete en un entorno de Python multiproceso, pero debe asegurarse de llamar a las funciones de una instancia en particular desde un solo subproceso a la vez. Entonces, si desea tener 4 subprocesos que ejecutan diferentes inferencias simultáneamente, cree un intérprete para cada uno como datos locales de subprocesos. De manera similar, si está llamando a invoke () en un hilo en un solo intérprete pero desea usar tensor () en otro hilo una vez que haya terminado, debe usar una primitiva de sincronización entre los hilos para asegurarse de que invoke haya regresado antes de llamar al tensor ( ).

Args
model_path Ruta al archivo TF-Lite Flatbuffer.
model_content Contenido del modelo.
experimental_delegates Experimental. Sujeto a cambios. Lista de TfLiteDelegate objetos devueltos por lite.load_delegate ().
num_threads Establece el número de subprocesos utilizados por el intérprete y disponibles para los núcleos de la CPU. Si no se establece, el intérprete utilizará un número de subprocesos predeterminado dependiente de la implementación. Actualmente, solo un subconjunto de núcleos, como conv, admite subprocesos múltiples.
Eleva
ValueError Si el intérprete no pudo crear.

Métodos

allocate_tensors

Ver fuente

allocate_tensors()

get_input_details

Ver fuente

get_input_details()

Obtiene detalles de entrada del modelo.

Devoluciones
Una lista de detalles de entrada.

get_output_details

Ver fuente

get_output_details()

Obtiene detalles de salida del modelo.

Devoluciones
Una lista de detalles de salida.

get_tensor

Ver fuente

get_tensor(
    tensor_index
)

Obtiene el valor del tensor de entrada (obtén una copia).

Si desea evitar la copia, utilice tensor(). Esta función no se puede utilizar para leer resultados intermedios.

Args
tensor_index Índice tensorial del tensor que se va a obtener. Este valor se puede obtener del campo ‘índice’ en get_output_details.
Devoluciones
un numpy array.

get_tensor_details

Ver fuente

get_tensor_details()

Obtiene detalles de tensor para cada tensor con detalles de tensor válidos.

Los tensores en los que no se encuentra la información requerida sobre el tensor no se agregan a la lista. Esto incluye tensores temporales sin nombre.

Devoluciones
Una lista de diccionarios que contienen información sobre tensores.

invoke

Ver fuente

invoke()

Invocar al intérprete.

Asegúrese de establecer los tamaños de entrada, asignar tensores y valores de relleno antes de llamar a esto. Además, tenga en cuenta que esta función libera el GIL, por lo que se pueden realizar cálculos pesados ​​en segundo plano mientras el intérprete de Python continúa. No se debe llamar a ninguna otra función en este objeto mientras la llamada invoke () no haya finalizado.

Eleva
ValueError Cuando el intérprete subyacente falla, genera ValueError.

reset_all_variables

Ver fuente

reset_all_variables()

resize_tensor_input

Ver fuente

resize_tensor_input(
    input_index, tensor_size, strict=False)

Cambia el tamaño de un tensor de entrada.

interpreter =Interpreter(model_content=tflite_model)
interpreter.resize_tensor_input(0,[1,224,224,3], strict=True)
interpreter.allocate_tensors()
interpreter.invoke()
Args
input_index Índice tensorial de entrada a establecer. Este valor se puede obtener del campo ‘índice’ en get_input_details.
tensor_size Tensor_shape para cambiar el tamaño de la entrada.
strict Solo las dimensiones desconocidas se pueden cambiar de tamaño cuando strict es verdad. Las dimensiones desconocidas se indican como -1 en el shape_signature attribute de un tensor dado. (predeterminado falso)
Eleva
ValueError Si el intérprete no pudo cambiar el tamaño del tensor de entrada.

set_tensor

Ver fuente

set_tensor(
    tensor_index, value
)

Establece el valor del tensor de entrada.

Tenga en cuenta que esto copia los datos en value.

Si desea evitar la copia, puede utilizar el tensor() función para obtener un búfer numpy apuntando al búfer de entrada en el intérprete tflite.

Args
tensor_index Índice tensorial del tensor a establecer. Este valor se puede obtener del campo ‘índice’ en get_input_details.
value Valor del tensor a establecer.
Eleva
ValueError Si el intérprete no pudo establecer el tensor.

tensor

Ver fuente

tensor(
    tensor_index
)

Devuelve la función que ofrece una vista numerosa del búfer tensorial actual.

Esto permite leer y escribir a estos tensores sin copias. Esto refleja más de cerca el miembro tensor () de la interfaz de la clase Intérprete de C ++, de ahí el nombre. Tenga cuidado de no retener estas referencias de salida a través de llamadas a allocate_tensors() y invoke(). Esta función no se puede utilizar para leer resultados intermedios.

Uso:

interpreter.allocate_tensors()
input = interpreter.tensor(interpreter.get_input_details()[0]["index"])
output = interpreter.tensor(interpreter.get_output_details()[0]["index"])for i in range(10):input().fill(3.)
  interpreter.invoke()print("inference %s"%output())

Observe cómo esta función evita hacer un numpy array directamente. Esto se debe a que es importante no retener muchas vistas reales de los datos más de lo necesario. Si lo hace, el intérprete ya no podrá ser invocado, porque es posible que el intérprete cambie el tamaño e invalide los tensores referenciados. La API de NumPy no permite ninguna mutabilidad de los búferes subyacentes.

INCORRECTO:

input = interpreter.tensor(interpreter.get_input_details()[0]["index"])()
output = interpreter.tensor(interpreter.get_output_details()[0]["index"])()
interpreter.allocate_tensors()  # This will throw RuntimeError
for i in range(10):
  input.fill(3.)
  interpreter.invoke()  # this will throw RuntimeError since input,output
Args
tensor_index Índice tensorial del tensor que se va a obtener. Este valor se puede obtener del campo ‘índice’ en get_output_details.
Devoluciones
Una función que puede devolver un nuevo número array apuntando al estado del tensor interno de TFLite en cualquier punto. Es seguro mantener la función para siempre, pero no es seguro mantener la función numpy array para siempre.