0

是否有一種很好的方法將使用tflearn.DNN類構建的模型部署到Google Cloud ML引擎?看起來SavedModel需要在預測簽名定義中定義輸入和輸出張量,但不確定如何從tflearn.DNN中獲取該張量。使用tflearn.DNN與谷歌雲引擎

回答

0

我後來至少在我的具體案例中發現了這一點。此片段可讓您將DNN導出爲SavedModel,然後可將其部署到Google Cloud ML引擎。

摘錄低於使用以下參數

  • 文件名是導出目錄
  • input_tensor是給予tflearn.DNN所述input_data層
  • output_tensor是傳遞給tflearn.DNN
  • 整個網絡
  • 會話是由tflearn返回的對象的屬性.DNN

    builder = tf.saved_model.builder.SavedModelBuilder(filename) 
    
    signature = tf.saved_model.signature_def_utils.predict_signature_def(
        inputs={'in':input_tensor}, outputs={'out':output_tensor}) 
    builder.add_meta_graph_and_variables(session, 
                [tf.saved_model.tag_constants.SERVING], 
                signature_def_map={'serving_default':signature}) 
    
    builder.save() 
    
    serving_vars = { 
        'name':self.name 
    } 
    
    assets = filename + '/assets.extra' 
    os.makedirs(assets) 
    
    with open(assets + '/serve.pkl', 'wb') as f: 
        pickle.dump(serving_vars, f, pickle.HIGHEST_PROTOCOL) 
    
+0

你能解釋一下你在使用serving_vars嗎? – rhaertel80

+0

在我回答之前,只知道我對使用TensorFlow相當陌生:)所以在這種特定情況下,serving_vars可能並不重要。但我有另一個模型,其中嵌入了word2vec模型。爲此,我將嵌入字典作爲服務變量,因爲它在其中一個圖層中使用。 –

+0

我只是想確保您能夠使用您導出的內容。 assets.extra中的東西不會自動使用。當涉及到嵌入時,我會假定它將被存儲爲TensorFlow檢查點/變量。是這樣嗎? – rhaertel80