【问题标题】:Use tflearn.DNN with google cloud ml-engine将 tflearn.DNN 与 google cloud ml-engine 一起使用
【发布时间】:2023-03-20 13:59:01
【问题描述】:

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

【问题讨论】:

    标签: tensorflow tensorflow-serving tflearn google-cloud-ml google-cloud-ml-engine


    【解决方案1】:

    至少在我的具体情况下,我后来才明白这一点。此 sn-p 可让您将 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)
      

    【讨论】:

    • 您能解释一下您使用 serving_vars 的目的吗?
    • 在我回答之前,只知道我对使用 TensorFlow 还很陌生 :) 所以在这种特定情况下,serving_vars 可能并不重要。但我有另一个模型,其中嵌入了 word2vec 模型。为此,我将嵌入字典作为服务变量,因为它用于其中一个层。
    • 我只是想确保您能够使用您导出的内容。 assets.extra 中的东西不会自动使用。当涉及到嵌入时,我假设它将存储为 TensorFlow 检查点/变量。是这样吗?
    • 是的,你是对的。我尝试删除 serving_vars 并没有引起任何变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多