2017-05-04 60 views
0

我目前正在進行關於在Google ML引擎上部署模型的探索。起初,我使用TensorFlow 1.1.0開發了一個模型,因爲它存在最新版本(在問這個問題時)。但是,事實證明GCP上最高支持的TensorFlow版本是1.0.1。TensorFlow 1.0.1 SavedModelBuilder

的問題是,以前當我使用TensorFlow 1.1.0,SavedModelBuilder可以正確保存模型爲SavedModel及其variables/目錄下的變量。但是,當我切換到TensorFlow 1.0.1時,它不起作用:SavedModel文件已創建,但在variables/下沒有創建任何文件,因此只能使用SavedModel文件(variables/下缺失的文件)構建模型。

這是一個已知的錯誤嗎?或者我應該做些什麼來使TensorFlow 1.0.1上的SavedModelBuilder像TensorFlow 1.1.0一樣工作?

謝謝。

編輯,更多詳細信息:

其實,有沒有明確的tf.Variable在我的模型存在。但是,有幾個tf.contrib.lookup.MutableDenseHashTable s,它們在TensorFlow 1.1.0中正確導出,但在TensorFlow 1.0.1中未導出(因爲在1.0.1中根本沒有導出任何變量)。

+0

爲了澄清,你說的'tf.contrib.lookup.MutableDenseHashTable'在1.1.0導出爲一個變量,但不1.0.1? – jwayne

+0

@jwayne我不確定它是否作爲變量導出。然而,在1.1.0中使用'SavedModelBuilder'保存並加載模型(包括'MutableDenseHashTable')可以正常工作,但不能在1.0.1中使用 – sokokaleb

回答

0

它看起來像在沒有變量的TensorFlow中保存和加載模型的能力在commit中介紹過,它僅在1.1.0中提供。

作爲解決方法,您可以在模型中創建一個虛擬(未使用)變量。

編輯: 基於OP更新,它聽起來像有一個MutableDenseHashTable沒有被保存。

您可以在CloudML Engine上運行TensorFlow 1.1,但需要手動將其添加爲一個附加軟件包。首先,下載TensorFlow 1.1 wheel。然後將其指定一個額外的包到您的訓練工作,例如,

gcloud ml-engine jobs submit training my_job \ 
    --module-name trainer.task \ 
    --staging-bucket gs://my-bucket \ 
    --package-path /my/code/path/trainer \ 
    --packages tensorflow-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl 
+0

事實上,由於SavedModel將用於服務(作爲服務模型)我需要保存的是變量及其值,以便圖形及其變量+內容可以在恢復後直接加載。 – sokokaleb