PD. Por favor, no me apuntes a convertir el modelo de Keras directamente a tflite ya que mi archivo .h5 no se convertiría a .tflite directamente. De alguna manera logré convertir mi archivo .h5 a .pb
He seguido este cuaderno de Jupyter para el reconocimiento facial con Keras. Luego model.h5
mi modelo en un archivo model.h5
, luego lo convertí en un gráfico congelado, model.pb
usando esto .
Ahora quiero usar mi archivo tensorflow en Android. Para esto necesitaré tener Tensorflow Lite, que requiere que convierta mi modelo en un formato .tflite
.
Para esto, estoy tratando de seguir las pautas oficiales para ello aquí . Como puede ver, requiere matrices input_array
y output_array
. ¿Cómo model.pb
detalles de estas cosas de mi archivo model.pb
?
input arrays
y output arrays
son las matrices que almacenan los tensores de entrada y salida respectivamente.
Tienen la intención de informar al
TFLiteConverter
sobre los tensores de entrada y salida que se utilizarán en el momento de la inferencia.
Para un modelo de Keras,
El tensor de entrada es el tensor de posición de la primera capa.
input_tensor = model.layers[0].input
El tensor de salida puede relacionarse con una función de activación.
output_tensor = model.layers[ LAST_LAYER_INDEX ].output
Para un gráfico congelado,
import tensorflow as tf gf = tf.GraphDef() m_file = open('model.pb','rb') gf.ParseFromString(m_file.read())
Obtenemos los nombres de los nodos,
for n in gf.node: print( n.name )
Para obtener el tensor,
tensor = n.op
El tensor de entrada puede ser un tensor de marcador de posición. El tensor de salida es el tensor que se ejecuta con session.run()
Para la conversión, obtenemos,
input_array =[ input_tensor ] output_array = [ output_tensor ]