2017-08-17 4 views
0

Ich möchte ein Modell aus contrib.learn.Classifier speichern, aber ich weiß nicht, wie man auf seine internen Knoten verweisen kann. Dies ist der Code, den ich in einem Vanille-Tensorflow-Modell (y = W * x + b) verwende, und es funktioniert großartig.Wie können wir ein Tensorflow-Modell aus einem contrib.learn.Classifier speichern?

W = tf.Variable([], dtype=tf.float32) 
b = tf.Variable([], dtype=tf.float32) 
x = tf.placeholder(tf.float32, name="x") 
my_model = tf.add(W * x, b, name="model") 
... # training 
builder = tf.saved_model.builder.SavedModelBuilder("/tmp/saved_model") 
builder.add_meta_graph_and_variables(sess, ["predict_tag"], signature_def_map= { 
      "model": tf.saved_model.signature_def_utils.predict_signature_def(
       inputs= {"x": x}, 
       outputs= {"model": my_model}) 
      }) 
builder.save() 

Nun, wenn ich contrib.learn.Classifier

estimator = tf.contrib.learn.LinearClassifier(feature_columns=feature_columns) 
estimator.fit(input_fn=train_input_fn, steps=1000) 

Wie kann ich die builder oben in ähnlicher Weise für diese letztere estimator benutzen? Beachten Sie, dass ich nicht tun möchte tf.train.Saver().save(sess, "/tmp/model"); Die Verwendung der saved_model.builder ist eine Voraussetzung. Vielen Dank!

Antwort

0

können Sie verwenden, um die export_savedmodel Funktion des Schätzer, die Inferenz Graphen als SavedModel in bestimmtem Verzeichnis exportiert., tf.contrib.learn.LinearClassifier

from tensorflow.contrib.layers.python.layers import feature_column as feature_column_lib 
from tensorflow.contrib.learn.python.learn.utils.input_fn_utils import build_parsing_serving_input_fn 

# create feature specs from feature columns 
feature_spec = feature_column_lib.create_feature_spec_for_parsing(
    feature_columns) 

# create the input function 
serving_input_fn = build_parsing_serving_input_fn(feature_spec) 

# finally save the model 
estimator.export_savedmodel('/path/to/save/my_model/', serving_input_fn=input_receiver_fn) 
Verwandte Themen