使用tf.data.Dataset每N步进行评估

TensorFlow是否有某种方法可以使用tf.data.Dataset API在训练的每N步自动对评估集进行评估?目前,我的输入函数如下所示:

def train_input_fn():
    dataset = tf.data.Dataset.from_tensor_slices((dict(train_x), train_y))
    return (
        dataset
        .repeat()
        .shuffle(len(train_x) * 1.33)
        .batch(128)
        .make_one_shot_iterator().get_next()
    )

def eval_input_fn():
    dataset = tf.data.Dataset.from_tensor_slices((dict(eval_x), eval_y))
    return (
        dataset
        .batch(len(eval_x)) # 使用整个评估集
        .make_one_shot_iterator().get_next()
    )

它们在一个tf.estimator.DNNRegressor实例上被调用,如下所示:

est = tf.estimator.DNNRegressor(...)
est.train(input_fn=train_input_fn, steps=5000)
est.evaluate(input_fn=eval_input_fn, steps=1)

回答:

使用已废弃的tf.contrib.learn.monitors.ValidationMonitor解决,如这个StackOverflow答案中所建议。使用monitors.replace_monitors_with_hooks实用函数,ValidationMonitor仍然可以用于Estimator上。

这是我的实现:

from tensorflow.contrib.learn.python.learn import monitors as monitor_lib
est = tf.estimator.DNNRegressor(...)
validation_monitor = tf.contrib.learn.monitors.ValidationMonitor(
    input_fn=eval_input_fn,
    every_n_steps=100,
)
list_of_monitors_and_hooks = [validation_monitor]
hooks = monitor_lib.replace_monitors_with_hooks(list_of_monitors_and_hooks, est)
est.train(
    input_fn=input_fn_train,
    steps=1000,
    hooks=hooks
)

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中创建了一个多类分类项目。该项目可以对…

发表回复

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