输入外部数据数组到TensorFlow模型.predict()时出现错误

我们成功地基于五个气候特征和一个二进制标签(0或1)训练了一个TensorFlow模型。我们希望为五个新的气候变量值的外部输入生成一个输出,这些值将被输入到model.predict()中。然而,当我们尝试输入一个包含五个值的数组时,遇到了错误。提前感谢!

def split_dataset(dataset, test_ratio=0.10):  """Splits a panda dataframe in two."""  test_indices = np.random.rand(len(dataset)) < test_ratio  return dataset[~test_indices], dataset[test_indices]train_ds_pd, test_ds_pd = split_dataset(dataset_df)print("{} examples in training, {} examples for testing.".format(    len(train_ds_pd), len(test_ds_pd)))label = "Presence"train_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_ds_pd, label=label)test_ds = tfdf.keras.pd_dataframe_to_tf_dataset(test_ds_pd, label=label)model_1 = tfdf.keras.RandomForestModel()model_1.compile(    metrics=["accuracy"])with sys_pipes():  model_1.fit(x=train_ds)evaluation = model_1.evaluate(test_ds, return_dict=True)print()for name, value in evaluation.items():  print(f"{name}: {value:.4f}")model_1.save("tfmodelmosquito")import numpy as npmodel_1=tf.keras.models.load_model ("tfmodelmosquito")import pandas as pdprediction = model_1.predict([9.0, 10.0, 11.0, 12.0, 13.0])print (prediction)

错误:

---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)<ipython-input-67-be5f2b7bc739> in <module>()      3 import pandas as pd      4 ----> 5 prediction = model.predict([[9.0,10.0,11.0,12.0,13.0]])      6 print (prediction)9 frames/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)    984           except Exception as e:  # pylint:disable=broad-except    985             if hasattr(e, "ag_error_metadata"):--> 986               raise e.ag_error_metadata.to_exception(e)    987             else:    988               raiseValueError: in user code:    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1569 predict_function  *        return step_function(self, iterator)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1559 step_function  **        outputs = model.distribute_strategy.run(run_step, args=(data,))    /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:1285 run        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:2833 call_for_each_replica        return self._call_for_each_replica(fn, args, kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:3608 _call_for_each_replica        return fn(*args, **kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1552 run_step  **        outputs = model.predict_step(data)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1525 predict_step        return self(x, training=False)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py:1030 __call__        outputs = call_fn(inputs, *args, **kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/saving/saved_model/utils.py:69 return_outputs_and_add_losses        outputs, losses = fn(*args, **kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/saving/saved_model/utils.py:167 wrap_with_training_arg        lambda: replace_training_and_call(False))    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/utils/control_flow_util.py:110 smart_cond        pred, true_fn=true_fn, false_fn=false_fn, name=name)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/smart_cond.py:56 smart_cond        return false_fn()    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/saving/saved_model/utils.py:167 <lambda>        lambda: replace_training_and_call(False))    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/saving/saved_model/utils.py:163 replace_training_and_call        return wrapped_call(*args, **kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/def_function.py:889 __call__        result = self._call(*args, **kwds)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/def_function.py:933 _call        self._initialize(args, kwds, add_initializers_to=initializers)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/def_function.py:764 _initialize        *args, **kwds))    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/function.py:3050 _get_concrete_function_internal_garbage_collected        graph_function, _ = self._maybe_define_function(args, kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/function.py:3444 _maybe_define_function        graph_function = self._create_graph_function(args, kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/function.py:3289 _create_graph_function        capture_by_value=self._capture_by_value),    /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py:999 func_graph_from_py_func        func_outputs = python_func(*func_args, **func_kwargs)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/def_function.py:672 wrapped_fn        out = weak_wrapped_fn().__wrapped__(*args, **kwds)    /usr/local/lib/python3.7/dist-packages/tensorflow/python/saved_model/function_deserialization.py:291 restored_function_body        "\n\n".join(signature_descriptions)))    ValueError: Could not find matching function to call loaded from the SavedModel. Got:      Positional arguments (2 total):        * Tensor("inputs:0", shape=(None, 5), dtype=float32)        * False      Keyword arguments: {}        Expected these arguments to match one of the following 4 option(s):        Option 1:      Positional arguments (2 total):        * {'Humidity': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Humidity'), 'Cloud_Cover': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Cloud_Cover'), 'Temperature': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Temperature'), 'Pressure': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Pressure'), 'Precipitation': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Precipitation')}        * False      Keyword arguments: {}        Option 2:      Positional arguments (2 total):        * {'Temperature': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Temperature'), 'Precipitation': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Precipitation'), 'Cloud_Cover': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Cloud_Cover'), 'Humidity': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Humidity'), 'Pressure': TensorSpec(shape=(None, 1), dtype=tf.float32, name='inputs/Pressure')}        * True      Keyword arguments: {}        Option 3:      Positional arguments (2 total):        * {'Cloud_Cover': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Cloud_Cover'), 'Humidity': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Humidity'), 'Precipitation': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Precipitation'), 'Temperature': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Temperature'), 'Pressure': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Pressure')}        * False      Keyword arguments: {}        Option 4:      Positional arguments (2 total):        * {'Temperature': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Temperature'), 'Precipitation': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Precipitation'), 'Humidity': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Humidity'), 'Cloud_Cover': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Cloud_Cover'), 'Pressure': TensorSpec(shape=(None, 1), dtype=tf.float32, name='Pressure')}        * True      Keyword arguments: {}

回答:

假设a是一个样本输入数组。将其转换为pandas数据框,然后转换为TF数据集。这种方法对我有效。

a = [17, 88, 1000, 0.47, 95]df=pd.DataFrame (columns=["Temperature", "Humidity", "Pressure", "Precipitation", "Cloud Cover"])df.loc[len(df)] = adf_ds=tfdf.keras.pd_dataframe_to_tf_dataset(df)model_1=tf.keras.models.load_model("tfmodelmosquito")prediction = model_1.predict(df_ds)print (prediction)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注