0

有没有一种好方法可以将使用 tflearn.DNN 类构建的模型部署到 Google Cloud ML Engine?SavedModel 似乎需要在预测签名定义中定义输入和输出张量,但不确定如何从 tflearn.DNN 中获取。

4

1 回答 1

0

至少在我的具体情况下,我后来才知道这一点。此代码段可让您将 DNN 导出为 SavedModel,然后可以将其部署到 Google Cloud ML Engine。

片段如下,带有以下参数

  • 文件名是导出目录
  • input_tensor 是给 tflearn.DNN 的 input_data 层
  • output_tensor 是传递给 tflearn.DNN 的整个网络
  • session 是 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)
    
于 2017-07-17T04:54:41.777 回答