web-dev-qa-db-fra.com

Convertir un modèle TensorFlow dans un format qui peut être servi

Je suis en train de suivre la documentation de Tensorflow pour convertir mon modèle formé en un format qui peut être servi dans le conteneur Docker. Comme je suis nouveau sur Tensorflow, j'ai du mal à convertir ce modèle formé en une forme qui sera adaptée pour servir.

Le modèle est déjà formé et j'ai le fichier de point de contrôle et le fichier .meta. Donc, j'ai besoin d'obtenir le fichier .pb et le dossier des variables à partir des deux fichiers ci-dessus. Quelqu'un peut-il me suggérer une approche sur la façon de faire cela pour servir les modèles?

.
|-- tensorflow model
|       -- 1
|       |-- saved_model.pb
|       -- variables
|           |-- variables.data-00000-of-00001
|           -- variables.index
5
Ashish

D'après votre question, voulez-vous dire que vous n'avez plus accès à Model et que vous n'avez que Check Point files et .meta files?

Si tel est le cas, vous pouvez consulter les liens ci-dessous contenant le code pour convertir ces fichiers en '.pb' file.

Tensorflow: Comment convertir des fichiers de modèle .meta, .data et .index en un seul fichier graph.pb

https://github.com/petewarden/tensorflow_makefile/blob/master/tensorflow/python/tools/freeze_graph.py

Si vous avez accès au modèle formé, je suppose que vous l'enregistrez actuellement en utilisant tf.train.Saver. Au lieu de cela, vous pouvez enregistrer le modèle et l'exporter à l'aide de l'une des trois fonctions (couramment utilisées) mentionnées ci-dessous:

  1. tf.saved_model.simple_save => Dans ce cas, seule l'API Predict est prise en charge pendant le service. Un exemple de ceci est mentionné par KrisR89 dans sa réponse.

  2. tf.saved_model.builder.SavedModelBuilder => Dans ce cas, vous pouvez définir les SignatureDefs, c'est-à-dire les API auxquelles vous souhaitez accéder pendant le service. Vous pouvez trouver un exemple sur la façon de l'utiliser dans le lien ci-dessous, https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/mnist_saved_model.py

  3. La troisième voie est illustrée ci-dessous:

    classifier = tf.estimator.DNNClassifier (config = training_config, feature_columns = feature_columns, hidden_units = [256, 32], optimizer = tf.train.AdamOptimizer (1e-4), n_classes = NUM_CLASSES, dropout = 0,1, model_dir = FLAGS.model )

    classifier.export_savedmodel (FLAGS.saved_dir,

    serve_input_receiver_fn = serve_input_receiver_fn)

L'exemple sur la façon d'enregistrer le modèle à l'aide des estimateurs se trouve dans le lien ci-dessous. Cela prend en charge les API Predict et Classification.

https://github.com/yu-iskw/tensorflow-serving-example/blob/master/python/train/mnist_premodeled_estimator.py

Faites-moi savoir si ces informations sont utiles ou si vous avez besoin d'aide supplémentaire.

1
Tensorflow Support

J'espère que ça aide:

import tensorflow as tf
from tensorflow.contrib.keras import backend as K
from tensorflow.python.client import device_lib

K.set_learning_phase(0)
model = tf.keras.models.load_model('my_model.h5')


export_path = './'
with K.get_session() as sess:
    tf.saved_model.simple_save(
        sess,
        export_path,
        inputs={'input_image': model.input},
        outputs={t.name: t for t in model.outputs}
    )
    print('Converted to SavedModel!!!')
0
Yesken