Я хочу сохранить свою модель тензорного потока и восстановить ее позже для прогнозирования, и я использую оценщик export_savedmodel
для сохранения модели.
Что касается документов, я использую serving_input_receiver_fn
для указания ввода. Я также хочу использовать export_outputs
для указания вывода, но я не понимаю разницы между прогнозами и export_outputs?
if mode == tf.estimator.ModeKeys.PREDICT:
export_outputs = {
'predict_output': tf.estimator.export.PredictOutput({
'class_ids': predicted_classes[:, tf.newaxis],
'probabilities': tf.nn.softmax(logits),
'logits': logits
})
}
predictions = {
'class': predicted_classes[:, tf.newaxis],
'prob': tf.nn.softmax(logits),
'logits': logits,
}
return tf.estimator.EstimatorSpec(mode, predictions=predictions, export_outputs=export_outputs)
Другая проблема заключается в том, как использовать сохраненную модель pb для прогнозирования в сеансе?
with tf.Session(graph=tf.Graph()) as sess:
model_path = 'model/1535016490'
tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], model_path)
inputs = sess.graph.get_tensor_by_name('input_example:0')
# how to get the output tensor?
# outputs = sess.graph.get_tensor_by_name()
res = sess.run([outputs], feed_dict={inputs: examples})
Я могу использовать tensorflow.contrib.predictor
, чтобы получить какой-то результат, но я хочу, чтобы универсальный метод для нашей команды восстановил модель с помощью C++. Итак, я думаю, получить тензоры и запустить их в сеансе, может быть, метод, который я хочу?
from tensorflow.contrib import predictor
predict_fn = predictor.from_saved_model(
export_dir='model/1535012949',
signature_def_key='predict_output',
tags=tf.saved_model.tag_constants.SERVING
)
predictions = predict_fn({'examples': examples})
Большое спасибо за вашу помощь!