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