我正在使用object detection in tensorflow api。在我之前的工作中,我曾经检查过当前步骤并在每个 n 步骤中保存我的模型,类似于提到here的方法。
在这种情况下,虽然作者使用TensorFlow-Slim来执行培训。因此,他们使用tf.train.Saver
传递给执行训练的实际函数:slim.learning.train()
。虽然此函数有一些关于使用参数save_interval_secs
写下训练模型的间隔的参数,但它是时间相关的而不是步骤依赖的。
所以,因为tf.train.Saver
是"被动"提到的实用程序here只是使用提供的参数保存模型,意思是不知道任何时间或步骤概念,并且在对象检测代码中控件在 TensorFlow-Slim 中传递,通过将保护程序作为参数传递,在这种情况下,我如何实现保存我的模型步骤(每个 n步而不是每个 x秒)?
唯一的解决方案是挖掘超薄代码并对其进行编辑(所有风险都来自此)?或者还有其他我不熟悉的选择吗?
P.S.1
我发现这个选项here有一个令人惊讶的类似问题,但不幸的是它没有任何答案。因此,由于我的问题仍然存在,我将保留这个问题,以引起人们对该问题的兴趣。
P.S.2
查看slim.learning
代码,我发现在train()
传递参数后,它只是将控制传递给supervisor.Supervisor
,这引用了tf.train.Supervisor
这有点奇怪,因为这个类被视为已弃用。 supervisor
的文档字符串中也提到了slim.learning
的使用。