Tensorflow对象检测API:如何禁用从检查点加载

时间:2018-10-26 01:02:05

标签: python tensorflow object-detection-api

我通过将expansion_size回购的research/slim/nets/mobilenet/mobilenet_v2.py中的tensorflow/models从6更改为4,创建了MobileNetV2功能提取器体系结构的自定义变体。

我希望能够使用model_main.py脚本来训练SSD + Mobilenet_v2(具有此更改)模型,如对象检测API的running_locally tutorial中所述。

这样做时,我会看到以下错误,这很有意义:

`InvalidArgumentError (see above for traceback): Restoring from checkpoint failed. This is most likely due to a mismatch between the current graph and the graph from the checkpoint. Please ensure that you have not altered the graph expected based on the checkpoint.

要解决此问题:

  1. 我从finetune_checkpoint中删除了pipeline.config规范。
  2. 我在load_pretrained=True中将load_pretrained=False更改为object_detection/model_hparams.py
  3. 我在--hparams_overrides='load_pretrained=false'上添加了model_main.py作为命令行输入参数。

尽管有这些,我仍然看到相同的错误。

为什么tensorflow仍在尝试还原检查点。我如何才能做到呢?

1 个答案:

答案 0 :(得分:0)

自己找到解决方案。事实证明,即使我已安排它不从管道配置文件中恢复检查点,事实证明内部<textarea id="editor" onchange="showCode();"><p>A paragraph</p></textarea> 对象仍然可以使用指定的tf.Estimator中的检查点;即使model_dir的主要用途是作为输出目录,在该目录中也会写入输出检查点。

我在official documentation for tf.Estimator中找到了此信息。以下是相关摘录供参考:

  

`model_dir:用于保存模型参数,图形等的目录。此目录还可用于将目录中的检查点加载到估算器中,以继续训练先前保存的模型。如果是PathLike对象,则路径将被解析。如果设置为None,则使用config中的model_dir。如果两者都设置,则必须相同。如果两者都为None,则将使用一个临时目录。

我原来的model_dir中有一个旧的检查点,该检查点在结构上与我的自定义模型不兼容。因此,我看到了错误。要解决该问题,我只需将我的model_dir更改为指向一个新的空目录即可。希望对遇到类似问题的人有所帮助。