問題是關於Tensorflow及其更高的API估算器,以及更一般的關於導出和重複使用模型的問題。Tensorflow導出和複用Python中的Estimator對象
有幾種工具可以導出張量流模型:tf.train.Saver,直接用它們的相關權重寫入和導入圖。
我的興趣在於tf.estimator.Estimator對象以及我們如何重用它們。我的用例非常簡單:我在張量流中使用了一個簡單的模型,並且希望在更多參與者中使用它的預測。
存在export_savemodel
服務模型的方法,但是我需要通過端口在我的模型中進行通信,我不確定這是否適合於訓練。
我的問題有以下幾點:
是否有一個(簡單)的方式來使用和進口的
export_savemodel
輸出的蟒蛇?我猜你可以在技術上使用C++代碼並在它們周圍創建包裝?是否有一種有效的方法來編譯
tf.estimator.Estimator
並在Python中重用它? XLA編譯器看起來很有趣,但我無法確定是否可以在Python中使用結果。一般來說,如何在Tensorflow中重用先前訓練過的模型的最佳做法是什麼?
非常感謝您的閱讀!
編輯(我自己的回答):接受的答案提供使用saved_model
API。但是,我認爲理解圖和凍結圖的概念是值得的。這gist link說明了可能在saved_model
api中複製的主要步驟。基本上,你必須:
- 用重新定義的輸入操作重建圖形;
- 凍結此版本;
- 在調用
tf.import_graph_def
重新加載模型時提供了input_map
參數的新輸入。
非常感謝您的回答。你認爲你有關於如何使用saved_model對象的鏈接?我有些努力去理解'input_signatures'和'output_signatures'。與此同時,我發現元圖解是一個很好的解決方案,因爲您可以重新定義輸入參數(因爲您通常使用隊列進行訓練並使用變量/張量進行推斷),凍結圖並保存圖。我嘗試了XLA的可能性,但是我的構建失敗,不幸運行啓動任何會話對象。 – Neo2551
@ Neo2551我不確定'input_signatures'和'output_signatures'是什麼意思。如果你的意思是存儲在SavedModel中的SIgnatureDefs,你可以看到這個文檔https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/signature_defs.md – iga
非常感謝你的回答!這個文檔真的很有用!我仍然在努力完全理解整個概念,但是這絕對支持我! – Neo2551