Multi-column input to ML.PREDICT for a TensorFlow model in BigQuery ML

生来就可爱ヽ(ⅴ<●) 提交于 2020-06-27 04:27:28

问题


I trained a TensorFlow classifier and created it as a model in BigQuery ML using CREATE MODEL. Now I would like to use ML.PREDICT to batch predict using this model. I get the error "Invalid table-valued function ml.predict Column inputs is not found in the input data to the PREDICT function."

Here's my query:

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

In the BigQuery documentation, they give an example for a TensorFlow model with a single column aliased as input so the TensorFlow input_fn can accept it. However, this classifier accepts hundreds of features. How do I specify the query passed to ML.PREDICT so it uses all the columns in my features table?


回答1:


After you load the model into BigQuery ML, click on the model in the BigQuery UI and switch over to the "Schema" tab. This should tell you what features (column names) the model wants.

It is possible that when you created the TensorFlow/Keras model you did not assign names to the input nodes. Then, the feature names might have been auto-assigned to something like int1 and float2.

Alternately, run the program saved_model_cli on the model (it's a python program that comes with tensorflow) to see what the supported signature is

saved_model_cli show --dir $export_path --all



回答2:


After some research, Auto ML encodes the input Tensors as Prensors which is a serialized string format shoved into a Tensor.

This means that you can't import the AutoML model from GCS directly into BQML the way you would import a TensorFlow model that explicitly encoded the different inputs as a json struct.

So, in order to import an AutoML model into BigQuery ML, the BigQuery engineering team would need to add support for something like model_type='automl' in addition to model_type='tensorflow'.




回答3:


At the moment multi-column is not possible, from the AutoML Beginners guide:

One column from your dataset, called the target, is what your model will learn to predict. Some number of the other data columns are inputs (called features) that the model will learn patterns from. You can use the same input features to build multiple kinds of models just by changing the target.

Also found this feature request to Multi-target AutoML Tables Request



来源:https://stackoverflow.com/questions/60570155/multi-column-input-to-ml-predict-for-a-tensorflow-model-in-bigquery-ml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!