簡體   English   中英

如何在 tensorflow SavedModel 中有多個輸出?

[英]How to have multiple outputs in a tensorflow SavedModel?

所以整個故事是我試圖將 a.pb 凍結推理圖轉換為 tflite model,為此我首先嘗試創建一個 SavedModel。 這是我在下面嘗試使用的代碼:

with tf.Session(graph=tf.Graph()) as sess:
    # name="" is important to ensure we don't get spurious prefixing
    tf.import_graph_def(graph_def, name="")
    g = tf.get_default_graph()
    inp = g.get_tensor_by_name("image_tensor:0")

    out = {{g.get_tensor_by_name('num_detections:0')}, {g.get_tensor_by_name('detection_boxes:0')},{g.get_tensor_by_name('detection_scores:0')},{g.get_tensor_by_name('detection_classes:0')}}


    sigs[signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY] = \
        tf.saved_model.signature_def_utils.predict_signature_def(
            {"inputs": inp}, {"outputs": out})

    builder.add_meta_graph_and_variables(sess,
                                         [tag_constants.SERVING],
                                         signature_def_map=sigs)

builder.save()

我沒有正確地“輸出”,但是我不知道如何為 SavedModel 簽名包含更多輸出,或者是否有可能?

我認為與其將集合提供給 output 字典,不如在該字典中指定所有單獨的 output 張量。 像這樣的東西對我有用。

with tf.Session(graph=tf.Graph()) as sess:
    # name="" is important to ensure we don't get spurious prefixing
    tf.import_graph_def(graph_def, name="")
    g = tf.get_default_graph()
    inp = g.get_tensor_by_name("input_image:0")
    out1 = g.get_tensor_by_name("output_1:0")
    out2 = g.get_tensor_by_name("output_2:0")
    out3 = g.get_tensor_by_name("output_3:0")
    sigs[signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY] = \
        tf.saved_model.signature_def_utils.predict_signature_def(
            {"in": inp}, {"out1": out1, "out2": out2, "out3": out3 })

    builder.add_meta_graph_and_variables(sess,
                                         [tag_constants.SERVING],
                                         signature_def_map=sigs)

    builder.save()

我還在學習 TF,但希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM