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