J'ai un fichier keras (h5). J'ai besoin de le convertir en tflite ?? J'ai fait des recherches, je dois d'abord passer par h5 -> pb -> tflite (car h5 - tflite entraîne parfois des problèmes)
from tensorflow.contrib import lite
converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5')
tfmodel = converter.convert()
open ("model.tflite" , "wb") .write(tfmodel)
Vous pouvez utiliser le TFLiteConverter pour convertir directement les fichiers .h5 en fichier .tflite. Cela ne fonctionne pas sous Windows.
Pour Windows, utilisez ceci bloc-notes Google Colab pour convertir. Téléchargez le fichier .h5 et il le convertira en fichier .tflite.
Suivez, si vous voulez l'essayer vous-même:
Créez une cellule de code et insérez ce code.
from tensorflow.contrib import lite
converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5' ) # Your model's name
model = converter.convert()
file = open( 'model.tflite' , 'wb' )
file.write( model )
Exécutez la cellule. Vous obtiendrez un fichier model.tflite. Faites un clic droit sur le fichier et sélectionnez l'option "TÉLÉCHARGER".
Utilisez cet outil pour convertir en Tensorflow: Keras to Tensorflow Converter
Ensuite, utilisez celui-ci parmi les 3 extraits de code (selon la façon dont vous avez enregistré votre fichier TF) pour convertir ce fichier en TF-Lite:
# Converting a GraphDef from session.
converter = lite.TFLiteConverter.from_session(sess, in_tensors, out_tensors)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
# Converting a GraphDef from file.
converter = lite.TFLiteConverter.from_frozen_graph(
graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
# Converting a SavedModel.
converter = lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
Seule une version spécifique de Tensorflow et Keras fonctionne correctement dans tous les systèmes d'exploitation. J'ai même essayé la ligne de commande toco mais elle a aussi des problèmes. Utilisez tensorflow == 1.13.0-rc1 et keras == 2.1.3
puis après cela fonctionnera
from tensorflow.contrib import lite
converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5' ) # Your model's name
model = converter.convert()
file = open( 'model.tflite' , 'wb' )
file.write( model )
Il y a un facteur que vous devez considérer. Vous devez changer la phase d'apprentissage , avant de convertir. C'est super important, quand vous avez Dropout ou Batch Normalization. Vous pouvez jeter un œil à 'Modèle Keras en tflite' ou 'Problème après la conversion du modèle Keras en Tensorflow pb' discussions