我已经尽力检查了堆栈溢出以及Estimator.evaluate()上的Tensorflow API的部分,但没有找到任何解决此问题的方法。
我是一名使用Tensorflow进行研究项目的学生,我一直在使用Evaluate()跟踪准确性,并将返回的值存储在文本文件中。我的顾问教授(使用ML / NN的人,但不是专门使用python和Tensorflow的人)想知道该准确性值是否特定于此刻看到的那批数据,或者这是该网络从开始到实现的整体准确性。这一刻。
有人可以澄清一下“准确性”是对评估时给定数据批的准确性的度量,还是对直到该时刻(包括该时刻)已查看的所有批次/数据的度量?
如果不是所有批次的度量标准,是否有任何方法可以从网络上找到它,还是需要手动计算?
关于我如何构建/训练我的网络(以防万一,这很重要):我在比Keras稍低的水平上构建模型(例如,我使用tf.layers方法定义了体系结构),但我也从来没有使用tf.session()显式运行网络(我只是在尝试过并且没有它的情况下过去的网络运行良好时才遇到麻烦)。
最佳答案
Estimator.evaluate()在每一步中都会调用input_fn,这将返回一批数据,如文档https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator#evaluate所示。因此,这里的input_fn返回值很重要,即如果测试数据较小,则可以返回整个数据,或者如果测试数据较大,则可以分批返回数据。
如果您的测试数据集足够小以适合内存(RAM),则input_fn会立即返回所有测试数据,您可以传递一次并获得结果
例如
结果= classifier.evaluate(test_inpf)
现在,如果您的测试数据很大而无法容纳到内存中,则要获取整个测试数据集的准确性,您可以获取每个批次的准确性(因为input_fn现在将返回批次),并获取数据集中所有批次的运行平均值。
例如如果您的测试数据集中有100个示例。批次大小为10。
对于每批10号尺寸,您都要评估准确性。您获得10个数据集的准确性值。那么这些平均值就是整个数据集模型的准确性。
这也是TensorFlow网站上的有用教程
https://www.tensorflow.org/tutorials/estimators/linear
关于python - Tensorflow的Estimator.evaluate():准确性是“全局”还是特定于它看到的批次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55165126/