gpt4 book ai didi

python - TensorFlow 自定义估计器在训练后调用评估时卡住

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:24 27 4
gpt4 key购买 nike

我根据他们的 colab 在 TensorFlow (v1.10) 中做了一个自定义估算器(参见 guide) .

我用以下方法训练玩具模型:

tf.estimator.train_and_evaluate(est, train_spec, eval_spec)

然后,使用一些测试集数据,尝试使用以下方法评估模型:

test_fn = lambda: input_fn(DATASET['test'], run_params)
test_res = est.evaluate(input_fn=test_fn)

(其中 train_fnvalid_fn 在功能上与 test_fn 相同,例如足以满足 tf.estimator.train_and_evaluate 去工作)。

我希望会发生一些事情,但这是我得到的:

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2018-11-09-13:38:44
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from ./test/model.ckpt-100
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.

然后它就永远运行了。

怎么会?

最佳答案

这是因为您无限期地重复数据集:

# In input_fn
dataset = dataset.repeat().batch(batch_size)

默认情况下,estimator.evaluate() 一直运行到 input_fn 引发输入结束异常为止。因为您无限期地重复测试数据集,它永远不会引发异常并继续运行。

您可以在测试时删除重复,或者使用原始“eval_spec”中使用的“steps”参数对给定数量的步骤运行评估。

关于python - TensorFlow 自定义估计器在训练后调用评估时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53226898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com