45 votes

Où les étapes de pré-traitement et de post-traitement doivent-elles être exécutées lorsqu'un modèle TF est desservi à l'aide du service TensorFlow?

Généralement l'utilisation d'un TF graphique, il est nécessaire de convertir les données brutes de valeurs numériques. Je me réfère à ce processus comme une étape de prétraitement. Par exemple, si les données brutes d'une phrase, est une façon de le faire est de marquer la phrase et de la carte chaque mot à un numéro unique. Ce prétraitement crée une séquence de nombre pour chaque phrase, qui sera le point de départ du modèle.

Nous avons également besoin de post-traitement à la sortie d'un modèle à l'interpréter. Par exemple, la conversion d'une séquence de nombres aléatoires générés par le modèle de mots et de construire une phrase.

TF Portion est une nouvelle technologie qui est récemment mise en place par Google pour servir une TF modèle. Ma question est que:

Où dois-pré-traitement et post-traitement sera exécuté que lorsque un TF modèle est servi à l'aide de TensorFlow servir?

Dois-je encapsuler pré-traitement et post-traitement des mesures dans mon TF Graphique (en utilisant par exemple py_fun ou map_fn) ou il y a un autre TensorFlow de la technologie que je ne suis pas au courant.

5voto

andresbravog Points 308

Je suis en cours d'exécution sur la même question ici, même si je ne suis pas sûr à 100% encore sur la façon d'utiliser le wordDict variable (je suppose que vous utilisez un trop à la carte, les mots avec son id), le principal pré-processus et post-traiter les fonctions sont définies ici:

https://www.tensorflow.org/programmers_guide/saved_model

en tant que export_outputs et serving_input_receiver_fn.

  • exports_outputs

Doit être défini en EstimatorSpec si vous êtes en utilisant des estimateurs. Voici un exemple pour un algorithme de classification

  predicted_classes = tf.argmax(logits, 1)
  categories_tensor = tf.convert_to_tensor(CATEGORIES, tf.string)
  export_outputs = { "categories": export_output.ClassificationOutput(classes=categories_tensor) }
  if mode == tf.estimator.ModeKeys.PREDICT:
    return tf.estimator.EstimatorSpec(
        mode=mode,
        predictions={
            'class': predicted_classes,
            'prob': tf.nn.softmax(logits)
        },
        export_outputs=export_outputs)
  • serving_input_receiver_fn

Il doit être défini avant l'exportation de la formation de l'estimateur du modèle, il suppose que l'entrée est une chaîne brute et l'analyse de votre entrée à partir de là, vous pouvez écrire votre propre fonction, mais je n'en suis pas sûr à chaque fois que vous pouvez utiliser des variables externes. Voici un exemple simple pour un algorithme de classification:

def serving_input_receiver_fn():
    feature_spec = { "words": tf.FixedLenFeature(dtype=tf.int64, shape=[4]) }
    return tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec)()

  export_dir = classifier.export_savedmodel(export_dir_base=args.job_dir,
                                            serving_input_receiver_fn=serving_input_receiver_fn)

espérons que cela aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X