2016-05-15 5 views
6

私はこのガイドに従って花を認識するための開始モデルを訓練しました。 https://www.tensorflow.org/versions/r0.8/how_tos/image_retraining/index.htmlTensorflow Servingを使用して再トレーニングされたインセプションモデルを提供するにはどうすればよいですか?

bazel build tensorflow/examples/image_retraining:retrain 
bazel-bin/tensorflow/examples/image_retraining/retrain --image_dir ~/flower_photos 

コマンドラインを介して画像を分類するために、私はこれを行うことができます:

bazel build tensorflow/examples/label_image:label_image && \ 
bazel-bin/tensorflow/examples/label_image/label_image \ 
--graph=/tmp/output_graph.pb --labels=/tmp/output_labels.txt \ 
--output_layer=final_result \ 
--image=$HOME/flower_photos/daisy/21652746_cc379e0eea_m.jpg 

をしかし、どのように私は、サービングTensorflowを経由してこのグラフを提供していますか?

テンソルフロー設定(https://tensorflow.github.io/serving/serving_basic)の設定に関するガイドでは、グラフの組み込み方(output_graph.pb)は教えていません。サーバーは、ファイルの異なるフォーマットを期待:

$>ls /tmp/mnist_model/00000001 
checkpoint export-00000-of-00001 export.meta 

答えて

2

グラフを提供するには、あなたがそれを訓練した後、あなたはこのAPIを使用して、それをエクスポートする必要があります:https://www.tensorflow.org/versions/r0.8/api_docs/python/train.html#export_meta_graph

APIが必要とされているメタグラフデフを生成しますサービス提供のコードでも

(これはあなたがについて尋ねていること.METAファイルが生成されます)、あなたはヨーヨーたらセーバークラスhttps://www.tensorflow.org/versions/r0.8/api_docs/python/train.html#Saver

あるSaver.save()を使用してチェックポイントを復元する必要がありますあなたがこれを行った場合、グラフを復元するために必要なチェックポイントファイルとメタドフルの両方が表示されます。

+0

:あなたは、バージョン番号(例えば、1 /)を表す親ディレクトリの下に置くなら、あなたは経由で提供tensorflow呼び出すことができます! PythonやTensorFlowにあまり精通していない人のために、ほんの数行のサンプルコールを提供することは可能でしょうか? – telemark

0

あなたがモデルをエクスポートする必要があります。再トレーニング中にモデルをエクスポートするPRがあります。その要点は以下の通りです:

import tensorflow as tf 

def export_model(sess, architecture, saved_model_dir): 
    if architecture == 'inception_v3': 
    input_tensor = 'DecodeJpeg/contents:0' 
    elif architecture.startswith('mobilenet_'): 
    input_tensor = 'input:0' 
    else: 
    raise ValueError('Unknown architecture', architecture) 
    in_image = sess.graph.get_tensor_by_name(input_tensor) 
    inputs = {'image': tf.saved_model.utils.build_tensor_info(in_image)} 

    out_classes = sess.graph.get_tensor_by_name('final_result:0') 
    outputs = {'prediction': tf.saved_model.utils.build_tensor_info(out_classes)} 

    signature = tf.saved_model.signature_def_utils.build_signature_def(
    inputs=inputs, 
    outputs=outputs, 
    method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME 
) 

    legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op') 

    # Save out the SavedModel. 
    builder = tf.saved_model.builder.SavedModelBuilder(saved_model_dir) 
    builder.add_meta_graph_and_variables(
    sess, [tf.saved_model.tag_constants.SERVING], 
    signature_def_map={ 
     tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature 
    }, 
    legacy_init_op=legacy_init_op) 
    builder.save() 

以上では、変数ディレクトリとsaved_model.pbファイルが作成されます。情報、Bhupeshのために本当にありがとうございました

tensorflow_model_server --port=9000 --model_name=inception --model_base_path=/path/to/saved_models/ 
関連する問題