web-dev-qa-db-ja.com

export_savedmodel関数を使用して推定器モデルをエクスポートする方法

export_savedmodelに関するチュートリアルはありますか?

この記事 tensorflow.orgと nittest code を通過しましたが、関数serving_input_fnのパラメーターを構築する方法についてはまだわかりません。 export_savedmodel

15
Yuwen Yan

次のようにします:

your_feature_spec = {
    "some_feature": tf.FixedLenFeature([], dtype=tf.string, default_value=""),
    "some_feature": tf.VarLenFeature(dtype=tf.string),
}

def _serving_input_receiver_fn():
    serialized_tf_example = tf.placeholder(dtype=tf.string, shape=None, 
                                           name='input_example_tensor')
    # key (e.g. 'examples') should be same with the inputKey when you 
    # buid the request for prediction
    receiver_tensors = {'examples': serialized_tf_example}
    features = tf.parse_example(serialized_tf_example, your_feature_spec)
    return tf.estimator.export.ServingInputReceiver(features, receiver_tensors)

estimator.export_savedmodel(export_dir, _serving_input_receiver_fn)

次に、バッチで「予測」署名名で提供モデルを要求できます。

ソース: https://www.tensorflow.org/guide/saved_model#prepare_serving_inputs

8
ursak

次の2つのオプションがあります。

モデルをエクスポートして、JSONディクショナリと連携する

mlengine-boilerplate repository では、これを使用して推定モデルをCloud ML Engineにエクスポートし、オンライン予測で簡単に使用できます( 予測のサンプルコード )。必要な部分:

def serving_input_fn():
    feature_placeholders = {
        'id': tf.placeholder(tf.string, [None], name="id_placeholder"),
        'feat': tf.placeholder(tf.float32, [None, FEAT_LEN], name="feat_placeholder"),
        #label is not required since serving is only used for inference
    }
    return input_fn_utils.InputFnOps(
        feature_placeholders,
        None,
        feature_placeholders)

Tensorflowの例で動作するようにモデルをエクスポートします

このチュートリアル は、export_savedmodel推定器で実装されたワイド&ディープモデルを提供し、エクスポートされたモデルにTensorflowの例を提供する方法。重要な部分:

from tensorflow.contrib.learn.python.learn.utils import input_fn_utils      
serving_input_fn = input_fn_utils.build_parsing_serving_input_fn(feature_spec)
2
Fematich

マスターブランチから直接テンソルフローを使用している場合、そのための機能を提供するモジュールtensorflow.python.estimator.exportがあります:

from tensorflow.python.estimator.export import export
feature_spec = {'MY_FEATURE': tf.constant(2.0, shape=[1, 1])}
serving_input_fn = export.build_raw_serving_input_receiver_fn(feature_spec)

残念ながら、少なくとも私にとってはそれ以上に進むことはありませんが、私のモデルが本当に正しいかどうかはわかりません。

または、pypiからインストールされた現在のバージョンには次の機能があります。

serving_input_fn = tf.contrib.learn.utils.build_parsing_serving_input_fn(feature_spec)
serving_input_fn = tf.contrib.learn.utils.build_default_serving_input_fn(feature_spec)

しかし、私も彼らを働かせることができませんでした。

おそらく、私はこれを正しく理解していないので、もっと幸運を祈っています。

クリス

2

Tf.train.Exampleとtf.train.Featureを用意し、入力を入力レシーバー関数に渡し、モデルを呼び出す必要があります。この例をご覧ください https://github.com/tettusud/tensorflow-examples/tree/master/estimators

0
sudharsan tk