学习对如何保存模型进行排名

时间:2020-02-08 17:17:02

标签: tensorflow

通过使用ANTIQUE问答数据集按照教程TF-Ranking for sparse features,我成功地实现了学习排名的方法。

现在,我的目标是将学习到的模型成功保存到磁盘上,这样我就可以轻松加载它,而无需再次进行培训。由于使用了Tensorflow文档,因此<?php $emailAddress = $_POST["email"]; $firstName = $_POST["firstName"]; $lastName = $_POST["lastName"]; $textMessage = $_POST["message"]; $to = "contact@website.com"; /*standard headers for HTML mail*/ $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type:text/html;charset=UTF-8\r\n"; /*Add. headers*/ $headers .= 'From: ' . $emailAddress . "\r\n"; $headers .= 'Reply-to: ' . $emailAddress . "\r\n"; $headers .= 'First name: ' . $firstName . "<br>"; $headers .= 'Last name: ' . $lastName . "<br><br>"; $headers .= 'Message:'."<br><br>"; $status = mail($to, "New client inquiry", $textMessage, $headers); if($status) { echo "<p>Your mail has been send succesfully!</p>"; } else { echo "<p>Your mail has not been delivered, please try again</p>"; } ?> 方法似乎是可行的方法。但是我无法确定如何告诉Tensorflow我的特征结构如何。由于docs here,最简单的方法似乎是调用estimator.export_saved_model(),这将向我返回所需的inpur接收器函数,该函数必须传递给tf.estimator.export.build_parsing_serving_input_receiver_fn()函数。但是我如何告诉Tensorflow我从学习到排名模型后得到的特征如何? 根据我目前的理解,该模型具有上下文特征规范和示例特征规范。因此,我想我必须以某种方式将这两个规范组合为一个功能描述,然后可以将其传递给export_saved_model函数?

1 个答案:

答案 0 :(得分:1)

因此,我认为您的做法正确无误; 您可以像这样获得build_ranking_serving_input_receiver_fn :(用为创建自己的上下文和训练数据的示例结构可能需要的def替换context_feature_columns(...)和example_feature_columns(...)):

def example_serving_input_fn():
    context_feature_spec = tf.feature_column.make_parse_example_spec(
        context_feature_columns(_VOCAB_PATHS).values())
    example_feature_spec = tf.feature_column.make_parse_example_spec(
        list(example_feature_columns(_VOCAB_PATHS).values()))
    servingInputReceiver = tfr.data.build_ranking_serving_input_receiver_fn(
        data_format=tfr.data.ELWC,
        context_feature_spec=context_feature_spec,
        example_feature_spec=example_feature_spec,
        list_size=_LIST_SIZE,
        receiver_name="input_ranking_data",
        default_batch_size=None)
    return servingInputReceiver

然后将其像这样传递给export_saved_model

ranker.export_saved_model('path_to_save_model', example_serving_input_fn())

(排名是tf.estimator.Estimator,也许您在代码中将此称为“估计器”)

    ranker = tf.estimator.Estimator(
        model_fn=model_fn,
        model_dir=_MODEL_DIR,
        config=run_config)