Nuestro grupo de trabajo ha estado por horas buscando para darle solución a tu interrogante, te ofrecemos la soluciones y nuestro deseo es serte de mucha apoyo.
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.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
allocate_tensors()
get_input_details
get_input_details()
Obtiene detalles de entrada del modelo.
Devoluciones | |
---|---|
Una lista de detalles de entrada. |
get_output_details
get_output_details()
Obtiene detalles de salida del modelo.
Devoluciones | |
---|---|
Una lista de detalles de salida. |
get_tensor
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
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
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
reset_all_variables()
resize_tensor_input
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
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
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. |
Aquí tienes las comentarios y puntuaciones
Nos puedes añadir valor a nuestra información participando con tu experiencia en las críticas.