我使用数据集 api 加载两个数据集,一个用于训练,一个用于评估。在运行评估或训练之前,我使用 sess.run(train_init_op) 在它们之间切换。
目前,我在完成一个周期后运行评估,即在训练数据集完全运行之后。
如果我想在训练数据集完成之前评估我的网络,我必须提前切换,并且通过执行此 tensorflow 会忘记它在训练数据集中的位置。有没有办法记住训练数据集迭代器的状态?评估完成后切换回这个位置?
最佳答案
我认为这不仅要记住训练集中的位置,还要记住累积的梯度、优化器的参数(如果您使用 Adam 之类的东西)等。在训练和验证之间切换上下文可能很棘手。
例如,在 Google 对象检测 API 中,有一个单独的验证过程 monitors for fresh checkpoints并对它们进行验证。与此同时,训练正在进一步进行。因此,通过设置检查点间隔,您可以实现您想要的任何验证频率。
关于python - 在训练周期的一部分之后运行评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425905/