【问题标题】:Multi-column input to ML.PREDICT for a TensorFlow model in BigQuery MLML.PREDICT 的多列输入,用于 BigQuery ML 中的 TensorFlow 模型
【发布时间】:2020-06-19 13:09:58
【问题描述】:

我训练了一个 TensorFlow 分类器,并使用 CREATE MODEL 在 BigQuery ML 中将其创建为模型。现在我想使用ML.PREDICT 使用此模型进行批量预测。我收到错误“在 PREDICT 函数的输入数据中找不到无效的表值函数 ml.predict 列输入。”

这是我的查询:

select * from ml.predict (
  model test.digital_native_classifier_kf, 
  (select * from dataset_id.features_table_id)
)

在 BigQuery 文档中,他们为 TensorFlow 模型提供了一个示例,该模型具有一个别名为 input 的列,因此 TensorFlow input_fn 可以接受它。然而,这个分类器接受数百个特征。如何指定传递给ML.PREDICT 的查询,以便它使用我的特征表中的所有列?

【问题讨论】:

  • 从这里的例子cloud.google.com/bigquery-ml/docs/reference/standard-sql/… 你在做什么是正确的。您确定您的功能表包含所有必需的列吗?比较模型和表模式
  • 是的,这与我在本地使用 TensorFlow 训练模型时使用的表完全相同。
  • 我会先测试几个特性,然后明确列出列名而不是先使用 * 作为健全性检查

标签: tensorflow google-bigquery


【解决方案1】:

将模型加载到 BigQuery ML 后,点击 BigQuery 用户界面中的模型并切换到“架构”标签。这应该会告诉您模型需要哪些特征(列名)。

您在创建 TensorFlow/Keras 模型时可能没有为输入节点分配名称。然后,特征名称可能已自动分配给 int1 和 float2 之类的名称。

或者,在模型上运行程序 saved_model_cli(它是一个 tensorflow 自带的 python 程序),看看支持的签名是什么

saved_model_cli show --dir $export_path --all

【讨论】:

    【解决方案2】:

    经过一些研究,Auto ML 将输入张量编码为 Prensors,这是一种序列化的字符串格式,被塞入一个张量中。

    这意味着您不能像导入将不同输入显式编码为 json 结构的 TensorFlow 模型那样将 AutoML 模型从 GCS 直接导入 BQML。

    因此,为了将 AutoML 模型导入 BigQuery ML,BigQuery 工程团队需要在 model_type='tensorflow' 之外添加对 model_type='automl' 之类的支持。

    【讨论】:

      【解决方案3】:

      目前多列是不可能的,来自AutoML Beginners guide

      数据集中的一列(称为目标)是您的模型将学习预测的内容。一些其他数据列是模型将从中学习模式的输入(称为特征)。只需更改目标,您就可以使用相同的输入特征来构建多种模型。

      还发现此功能请求发给Multi-target AutoML Tables Request

      【讨论】:

      • 我的问题是关于 BigQuery ML,而不是 AutoML。他们使用相同的后端吗?
      • 抱歉不一样,可能是syntax 问题?试试[PROJECT_ID].[DATASET].[MODEL](包括反引号)
      • 该语句是关于多个输出,而不是多个输入。
      猜你喜欢
      • 2020-07-03
      • 1970-01-01
      • 2016-03-01
      • 2021-04-18
      • 2022-01-23
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多