【发布时间】:2019-09-21 07:21:49
【问题描述】:
在通过tf.contrib.predictor.from_saved_model 重新加载数据后,我正在努力将数据提供给tf.esitimator.DNNClassifier。非常感谢您的帮助。
我找到了 this 和 this 链接,但出现错误。下面是我的实现:
保存模式:
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。信息:张量流:完成调用 模型_fn。 INFO:tensorflow:Signatures 包含在 Classify 的导出中: ['serving_default', 'classification'] INFO:tensorflow:Signatures 包含在 Regress 的导出中:['regression'] INFO:tensorflow:Predict 导出中包含的签名:['predict'] 信息:张量流:火车出口中包含的签名:无 信息:tensorflow:Eval 导出中包含的签名:无 信息:张量流:从恢复参数 /nimble/kdalal/model_dir/model.ckpt-28917 INFO:tensorflow:Assets 添加 作图。信息: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'、 'called_20D'、'st_cb_ans_20D'、'JOB_ROLE'、'st_cb_call_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?
【问题讨论】:
-
@EdekiOkoh - 我已经编辑了我的问题。此外,当我将输入更改为
prod_predictions = predict_prod({'inputs':X_test.values})时,它抛出 ValueError: Cannot feed value of shape (75116, 12) for Tensor 'input_example_tensor:0',其形状为 '(?,)' i> 错误。
标签: python-3.x tensorflow machine-learning keras