2017-01-17 11 views
10

मैंने 'चौड़े और गहरे' उदाहरण (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/learn/wide_n_deep_tutorial.py) के आधार पर एक मॉडल बनाया है।'विस्तृत और गहरे' मॉडल के लिए एक tensorflow सेवारत ग्राहक कैसे बनाएँ?

m = build_estimator(model_dir) 
    m.fit(input_fn=lambda: input_fn(df_train, True), steps=FLAGS.train_steps) 
    results = m.evaluate(input_fn=lambda: input_fn(df_test, True), steps=1) 

    print('Model statistics:') 

    for key in sorted(results): 
    print("%s: %s" % (key, results[key])) 

    print('Done training!!!') 

    # Export model 
    export_path = sys.argv[-1] 
    print('Exporting trained model to %s' % export_path) 

    m.export(
    export_path, 
    input_fn=serving_input_fn, 
    use_deprecated_input_fn=False, 
    input_feature_key=INPUT_FEATURE_KEY 

मेरा प्रश्न है, कैसे मैं इस निर्यात मॉडल से अनुमान लगाने के लिए एक ग्राहक बना सकता है:

मैं इस प्रकार मॉडल निर्यात किया है? साथ ही, क्या मैंने मॉडल को सही तरीके से निर्यात किया है?

आखिरकार मुझे जावा में भी ऐसा करने की आवश्यकता है। मुझे संदेह है कि मैं जीआरपीसी का उपयोग कर प्रोटो फाइलों से जावा कक्षाएं बनाकर ऐसा कर सकता हूं।

दस्तावेज़ीकरण बहुत स्केची है, इसलिए मैं यहां क्यों पूछ रहा हूं।

बहुत धन्यवाद!

+0

क्या आपने [यह ट्यूटोरियल] देखा है (https://tensorflow.github.io/serving/serving_basic.html)? कहां गलत हुआ? –

+0

हाँ मैंने इस धन्यवाद को देखा है। यह अच्छा है अगर आप शुद्ध tensorflow का उपयोग कर रहे हैं, लेकिन मैं tf.contrib.learn api का उपयोग कर रहा हूँ। मुझे यकीन नहीं है कि इस एपीआई का उपयोग कर क्लाइंट को निर्यात और कैसे बनाया जाए। –

उत्तर

1

मैंने एक साधारण ट्यूटोरियल Exporting and Serving a TensorFlow Wide & Deep Model लिखा था।

टी एल; डॉ

एक आकलनकर्ता निर्यात करने के लिए चार चरण हैं:

  1. आकलनकर्ता आरंभीकरण के दौरान इस्तेमाल सभी सुविधाओं की एक सूची के रूप में निर्यात के लिए सुविधाओं को परिभाषित करें।

  2. create_feature_spec_for_parsing का उपयोग कर एक सुविधा कॉन्फ़िगर बनाएं।

  3. input_fn_utils.build_parsing_serving_input_fn का उपयोग कर सेवा में उपयोग के लिए उपयुक्त serving_input_fn बनाएं।

  4. export_savedmodel() का उपयोग कर मॉडल निर्यात करें।

एक ग्राहक स्क्रिप्ट ठीक से चलाने के लिए आप तीन निम्न चरणों का पालन करने की जरूरत है:

  1. बनाएँ और/सेवारत/फ़ोल्डर, उदा में कहीं अपनी स्क्रिप्ट जगह/सेवारत/tensorflow_serving/उदाहरण/

  2. py_binary जोड़कर संबंधित BUILD फ़ाइल बनाएं या संशोधित करें।

  3. मॉडल सर्वर बनाएं और चलाएं, उदा। tensorflow_model_server

  4. एक क्लाइंट जो एक tf भेजता है, बनाएं और चलाएं। अनुमान के लिए हमारे tensorflow_model_server पर नमूना दें।

अधिक जानकारी के लिए ट्यूटोरियल को स्वयं देखें।

1

बस इसे समझने में एक ठोस सप्ताह बिताया। सबसे पहले, m.export कुछ हफ्तों में बहिष्कृत होने जा रहा है, इसलिए उस ब्लॉक के बजाय, m.export_savedmodel(export_path, input_fn=serving_input_fn) का उपयोग करें।

जिसका मतलब है कि आपको serving_input_fn() को परिभाषित करना है, जो कि व्यापक और गहरे ट्यूटोरियल में परिभाषित input_fn() से अलग हस्ताक्षर होना चाहिए। अर्थात्, आगे बढ़ते हुए, मुझे लगता है कि यह अनुशंसा की जाती है कि input_fn()-प्रकार की चीजें InputFnOps ऑब्जेक्ट को वापस करने वाली हैं, परिभाषित here

यहाँ कैसे मैं पता लगा है कि काम करने के लिए बताया गया है:

from tensorflow.contrib.learn.python.learn.utils import input_fn_utils 
from tensorflow.python.ops import array_ops 
from tensorflow.python.framework import dtypes 

def serving_input_fn(): 
    features, labels = input_fn() 
    features["examples"] = tf.placeholder(tf.string) 

    serialized_tf_example = array_ops.placeholder(dtype=dtypes.string, 
               shape=[None], 
               name='input_example_tensor') 
    inputs = {'examples': serialized_tf_example} 
    labels = None # these are not known in serving! 
    return input_fn_utils.InputFnOps(features, labels, inputs) 

यह शायद नहीं 100% मुहावरेदार है, लेकिन मैं यकीन है कि यह काम करता है हूँ। अभी के लिए।

संबंधित मुद्दे