Tensorflow - 如何仅通过评估来限制时期?

时间:2016-11-20 08:52:18

标签: tensorflow

鉴于我训练模型;使用metagraph / save.Saver保存它,以及绘制到新脚本/流程以测试测试数据的负载,确保我只迭代测试数据一次的最佳方法是什么?

通过我的训练数据,我希望能够迭代整个数据集进行任意数量的迭代。我用

tf.train.string_input_producer()

驱动一个加载文件的队列进行训练,所以我可以安全地将num_epochs保留为默认值(= None)并让其他控件驱动训练终止。

但是,当我运行图表进行评估时,我只想评估测试集一次(并收集相应的统计信息)。

最初的尝试解决方案:

为Epochs制作一个张量,然后将其传递给tf.train.string_input_producer,然后根据test / train将其赋值给适当的值。

可是:

tf.train.string_input_producer只将整数作为num_epochs,所以这是不可能的......除非我遗漏了什么。

补充说明:我使用

tf.train.batch() 

读入已经序列化到协议缓冲区(https://www.tensorflow.org/versions/r0.11/how_tos/reading_data/index.html#file-formats)的测试/训练数据,因此我对数据的加载方式以及加载数据的可见性了解最少。

tf.train.batch显然会抛出tf.errors.OutOfRangeError,但我不清楚如何成功捕获,或者这甚至是我真正想做的事情。我试过一个很天真的

try...except...finally 

(例如在https://www.tensorflow.org/versions/r0.11/how_tos/reading_data/index.html#creating-threads-to-prefetch-using-queuerunner-objects中),它没有从tf.train.batch中捕获错误。

0 个答案:

没有答案