[英]How to deploy a tensorflow model to azure ml workbench
我使用Azure ML Workbench
來執行二進制分類。 到目前為止,一切正常,我有很好的准確性,我想將模型部署為推理的Web服務。
我真的不知道從哪里開始:azure提供了這個doc ,但是這個例子使用的是sklearn
和pickle
,而不是tensorflow
。
我甚至不確定是否應該使用tf.train.Saver()
或使用tf.saved_model_builder()
來保存和恢復模型。
如果有人有一個很好的例子,在azure ml工作台中使用vanilla tensorflow,那就太好了。
好的,所以對於想知道同樣的人,我找到了答案。 而不是使用的pickle
模式,我救了我的模型作為protobuf
,按照這個 。 然后,我編寫init(),run()和load_graph()方法,如下所示:
def init():
global persistent_session, model, x, y, keep_prob, inputs_dc, prediction_dc
#load the model and connect the inputs / outputs
model = load_graph(os.path.join(os.environ['AZUREML_NATIVE_SHARE_DIRECTORY'], 'frozen_model.pb'))
x = model.get_tensor_by_name('prefix/Placeholder:0')
y = model.get_tensor_by_name('prefix/convNet/sample_prediction:0')
keep_prob = model.get_tensor_by_name('prefix/Placeholder_3:0')
persistent_session = tf.Session(graph=model)
# load the graph from protobuf file
def load_graph(frozen_graph_filename):
with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
with tf.Graph().as_default() as graph:
tf.import_graph_def(graph_def, name="prefix")
return graph
# run the inference
def run(input_array):
import json
global clcf2, inputs_dc, prediction_dc
try:
prediction = persistent_session.run(y, feed_dict={ x: input_array, keep_prob:1.0})
print("prediction : ", prediction)
inputs_dc.collect(input_array)
prediction_dc.collect(prediction.tolist())
return prediction
except Exception as e:
return (str(e))
return json.dumps(str(prediction.tolist()))
可能需要一些清潔,但它的工作原理!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.