【问题标题】:Estimator's model_fn includes params argument, but params are not passed to EstimatorEstimator 的 model_fn 包含 params 参数,但 params 不会传递给 Estimator
【发布时间】:2018-09-04 09:03:11
【问题描述】:

我正在尝试在本地运行对象检测 API。

我相信我已经按照TensorFlow Object Detection API 文档中的说明进行了所有设置,但是,当我尝试运行 model_main.py 时,会显示此警告并且模型无法训练。 (我无法确定模型是否正在训练,因为该过程并未终止,但没有出现进一步的日志)

WARNING:tensorflow:Estimator 的 model_fn (.model_fn at 0x0000024BDBB3D158>) 包括 params 参数,但 params 不会传递给 Estimator。

我传入的代码是:

python tensorflow-models/research/object_detection/model_main.py \
--model_dir=training \
--pipeline_config_path=ssd_mobilenet_v1_coco.config \
--checkpoint_dir=ssd_mobilenet_v1_coco_2017_11_17/model.ckpt \
--num_tain_steps=2000 \
--num_eval_steps=200 \
--alsologtostderr

什么可能导致此警告?

为什么代码会卡住?

请帮忙!

【问题讨论】:

  • 听起来您的 tensorflow 版本与您的 models 版本不同步。您使用的是最新版本的models repo 吗?你用的是什么版本的tensorflow?
  • @DomJack 我正在使用 Tensorflow 版本 1.10.0 和最新的对象检测 API。也许我需要降级我的张量流?

标签: tensorflow object-detection object-detection-api


【解决方案1】:

我遇到了同样的问题,发现这个警告与模型不工作的问题无关。我可以让模型像这个警告一样工作。

我的错误是我误解了running_locally.md文件中的那一行

“${MODEL_DIR} 指向将写入训练检查点和事件的目录”

我把 MODEL_DIR 改成了{project directory}/models/model,其中目录的结构是:

+data
  -label_map file
  -train TFRecord file
  -eval TFRecord file
+models
  + model
    -pipeline config file
    +train
    +eval

它奏效了。希望对您有所帮助。

编辑:虽然这可能有效,但在这种情况下,model_dir 不包含任何已保存的检查点文件,如果您在保存一些检查点文件后停止训练并再次重新启动,训练仍然会被跳过。 doc 指定了推荐的目录结构,但不必与所有tfrecord的路径结构相同,可以在配置文件中配置预训练的检查点。

实际原因是当model_dir 包含已经到达NUM_TRAIN_STEP 的检查点文件时,脚本将假定训练完成并退出。删除检查点文件并重新开始训练即可。

【讨论】:

  • 你还收到警告吗?
  • {project directory}/models/model 在这种情况下,我们是否应该创建新目录model,因为我创建了model,但它对我没有用,或者你能在 python 执行代码中解释一下吗?
【解决方案2】:

在我的情况下,我遇到了同样的错误,因为我在 .cpkt 文件所在的文件夹中也有预训练模型的检查点。

删除 .tar.gz 文件中的那个文件后,训练成功了。

【讨论】:

    【解决方案3】:

    我也收到了这个错误,这是因为我之前在不同的 dataset/model/config 文件上训练了一个模型,并且之前的 ckpt 文件仍然存在于我正在使用的目录中,移动了旧的 ckpt 训练数据到另一个目录解决了这个问题

    【讨论】:

    • 这不能作为答案。它应该是一个评论。
    • 你必须有 50 声望才能发表评论
    【解决方案4】:

    您的脚本看起来不错。 需要注意的一点是,新的 model_main.py 不会打印训练的日志(比如训练步骤、lr、损失等)。它只会打印一个或多个 epoch 后的评估结果,这将是一个很久了。
    所以“进程没有终止,但没有进一步的日志出现”是正常的。可以通过“nvidia-smi”查看gpu情况确认运行,也可以使用tensorboard查看。

    【讨论】:

      【解决方案5】:

      我也遇到了这个警告信息。我检查了nvidia-smi,似乎还没有开始训练。还尝试重新组织输出目录,但没有成功。查看Configuring the Object Detection Training Pipeline (tensorflow official)后,发现是配置问题。通过添加load_all_detection_checkpoint_vars: true解决了问题。

      【讨论】:

        猜你喜欢
        • 2017-04-18
        • 2014-07-31
        • 2016-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 2013-07-18
        • 1970-01-01
        相关资源
        最近更新 更多