Tensor流-将数据帧馈送到DNNClassifier以进行预测

时间:2019-05-02 18:14:32

标签: python-3.x tensorflow machine-learning keras

在通过tf.esitimator.DNNClassifier重新加载数据后,我难以将数据提供给tf.contrib.predictor.from_saved_model。非常感谢您的帮助。

我找到了thisthis链接,但出现错误。下面是我的实现:

保存模型:

feature_spec = tf.feature_column.make_parse_example_spec(feat_cols)
export_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec)
tuned_model.export_savedmodel('./model_dir/saved_models/', export_fn)

这将成功保存以下信息的模型:

  

INFO:tensorflow:调用model_fn。 INFO:tensorflow:完成调用   model_fn。 INFO:tensorflow:导出中包含用于分类的签名:   ['serving_default','分类'] INFO:tensorflow:签名   包含在出口中以进行回归:['回归']   INFO:tensorflow:导出中包含Predict的签名:['predict']   INFO:tensorflow:Train的导出中包含的签名:无   INFO:tensorflow:导出的评估中包含的签名:无   INFO:tensorflow:还原参数   /nimble/kdalal/model_dir/model.ckpt-28917 INFO:tensorflow:添加了资产   图。 INFO:tensorflow:无资产可写入。   INFO:tensorflow:SavedModel写入:   ./model_dir/saved_models/temp-b'1556819228'/saved_model.pb

重新加载预测:

predict_prod = tf.contrib.predictor.from_saved_model('./model_dir/saved_models/1556819228')
predict_prod(dict(X_test))

我收到以下错误:

  

ValueError:在input_dict中获得了意外的键:{'DOW','JOB_FUNCTION',   'ACC_SIZE','answered_20D','MatchType','CONTACT_STATE','SEASONS',   'named_20D','st_cb_ans_20D','JOB_ROLE','st_cb_drawn_20D',   'CALL_BLOCKS'}预期为:{'inputs'}

我的X_test是我要获取预测的数据框。

[编辑]:

我的输入dict如下所示:

{'JOB_ROLE': 714859     Manager-Level
 714860     Manager-Level
 714861     Manager-Level
 714862     Manager-Level
 714863    Director-Level
 Name: JOB_ROLE, dtype: object,
 'JOB_FUNCTION': 714859    Information Technology
 714860    Information Technology
 714861    Information Technology
 714862    Information Technology
 714863    Information Technology
 Name: JOB_FUNCTION, dtype: object,
 'MatchType': 714859            Work Phone
 714860            Work Phone
 714861            Work Phone
 714862            Work Phone
 714863    Account Main Phone
 Name: MatchType, dtype: object,
 'CALL_BLOCKS': 714859    17_18
 714860    17_18
 714861    17_18
 714862    17_18
 714863    17_18
 Name: CALL_BLOCKS, dtype: object,
 'ACC_SIZE': 714859    StartUps
 714860    StartUps
 714861       Small
 714862    StartUps
 714863       Small
 Name: ACC_SIZE, dtype: object,
 'CONTACT_STATE': 714859    WA
 714860    CA
 714861    CA
 714862    CA
 714863    CA
 Name: CONTACT_STATE, dtype: object,
 'SEASONS': 714859    Spring
 714860    Spring
 714861    Spring
 714862    Spring
 714863    Spring
 Name: SEASONS, dtype: object,
 'DOW': 714859    Monday
 714860    Monday
 714861    Monday
 714862    Monday
 714863    Monday
 Name: DOW, dtype: object,
 'called_20D': 714859    0.038760
 714860    0.077519
 714861    0.217054
 714862    0.046512
 714863    0.038760
 Name: called_20D, dtype: float64,
 'answered_20D': 714859    0.000000
 714860    0.086957
 714861    0.043478
 714862    0.000000
 714863    0.130435
 Name: answered_20D, dtype: float64,
 'st_cb_called_20D': 714859    0.050233
 714860    0.282496
 714861    0.282496
 714862    0.282496
 714863    0.282496
 Name: st_cb_called_20D, dtype: float64,
 'st_cb_ans_20D': 714859    0.059761
 714860    0.314741
 714861    0.314741
 714862    0.314741
 714863    0.314741
 Name: st_cb_ans_20D, dtype: float64}

我是tf的初学者,我不知道如何将数据帧传递到模型,以便可以调用predcit方法并获得预测。

我还应该将我的 输入数据 转换为其他dtype吗?

2 个答案:

答案 0 :(得分:0)

我找到了答案。请参阅link,以了解如何将数据输入到导入的estimator模型中。

答案 1 :(得分:0)

ValueError:无法为张量为'(?,)'的张量'input_example_tensor:0'输入形状(75116,12)的值

关于这个问题,您的模型似乎可以预测一次1项

您只能提供一个像{'inputs':X_test.values [0]}

这样的项目。

您可以更改模型以预测一堆物品

祝你好运