簡體   English   中英

Tensorflow對象檢測API:如何禁用從檢查點加載

[英]Tensorflow object detection API: How to disable loading from checkpoint

我創建MobileNetV2特征提取架構的自定義變化,通過改變expansion_size從6比4 research/slim/nets/mobilenet/mobilenet_v2.pytensorflow/models回購。

我希望能夠使用model_main.py腳本訓練SSD + Mobilenet_v2(具有此更改)模型,如對象檢測API的running_locally教程中所述

當我這樣做時,我看到以下錯誤,這是有道理的:

`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. 我從pipeline.config刪除了finetune_checkpoint規范。
  2. 我在object_detection/model_hparams.py load_pretrained=True更改為load_pretrained=False
  3. 我添加--hparams_overrides='load_pretrained=false'作為命令行輸入參數model_main.py

盡管有這些,我仍然看到相同的錯誤。

為什么tensorflow仍在嘗試還原檢查點。 我該如何做呢?

自己找到解決方案。 事實證明,即使我已安排它不從管道配置文件中恢復檢查點,但事實證明內部tf.Estimator對象仍可以使用指定的model_dir的檢查點; 即使model_dir的主要用途是將輸出檢查點寫入其中的輸出目錄。

我在tf.Estimator官方文檔中找到了此信息。 以下是相關摘錄供參考:

`model_dir:用於保存模型參數,圖形等的目錄這也可用於將檢查點從目錄加載到估計器中,以繼續訓練先前保存的模型 如果是PathLike對象,則路徑將被解析。 如果設置為None,則使用config中的model_dir。 如果兩者都設置,則必須相同。 如果兩者都為None,則將使用一個臨時目錄。

我原來的model_dir有一個舊的檢查點,該檢查點在架構上與我的自定義模型不兼容。 因此,我看到了錯誤。 為了解決這個問題,我只需將model_dir更改為指向一個新的空目錄即可。 我希望這對遇到類似問題的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM