Estimator 的 model_fn 包含 params 参数,但 params 未传递给 Estimator
Estimator's model_fn includes params argument, but params are not passed to Estimator
我正尝试在本地 运行 对象检测 API。
我相信我已经按照 TensorFlow Object Detection API 文档中的描述设置了所有内容,但是,当我尝试 运行 model_main.py 时,此警告显示并且模型没有火车。 (我真的无法判断模型是否正在训练,因为进程没有终止,但没有进一步的日志出现)
WARNING:tensorflow:Estimator's model_fn (.model_fn at 0x0000024BDBB3D158>) includes
params argument, but params are not passed to 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
什么可能导致此警告?
为什么代码会卡住?
请帮忙!
我遇到了同样的问题,我发现这个警告与模型不起作用的问题无关。我可以使模型像显示此警告一样工作。
我的错误是我误解了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
的检查点文件时,脚本将假定训练已完成并退出。删除检查点文件并重新启动训练即可。
在我的例子中,我遇到了同样的错误,因为我在我的 .cpkt 文件所在的文件夹中,也是预训练模型的检查点。
删除该文件进入 .tar.gz 文件,训练有效。
你的脚本看起来不错。
我们应该注意的一件事是,新的 model_main.py 不会打印训练日志(如训练步骤、lr、损失等)。它只打印一个或多个 epoches 后的评估结果,这将好久不见。
所以 "the process isn't terminated, but no further logs appear" 是正常的。你可以用"nvidia-smi"查看gpu的情况来确认它的运行,或者用tensorboard查看
我也收到这个错误,这是因为我之前在不同的 dataset/model/config 文件上训练了一个模型,并且之前的 ckpt 文件仍然存在于我正在使用的目录中,移动了旧的 ckpt将训练数据保存到不同的目录解决了这个问题
我也遇到过这个警告信息。我检查了 nvidia-smi
,似乎训练没有开始。还尝试重新组织输出目录,但没有成功。查看Configuring the Object Detection Training Pipeline (tensorflow official)后,发现是配置问题。通过添加 load_all_detection_checkpoint_vars: true
.
解决了问题
我正尝试在本地 运行 对象检测 API。
我相信我已经按照 TensorFlow Object Detection API 文档中的描述设置了所有内容,但是,当我尝试 运行 model_main.py 时,此警告显示并且模型没有火车。 (我真的无法判断模型是否正在训练,因为进程没有终止,但没有进一步的日志出现)
WARNING:tensorflow:Estimator's model_fn (.model_fn at 0x0000024BDBB3D158>) includes params argument, but params are not passed to 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
什么可能导致此警告?
为什么代码会卡住?
请帮忙!
我遇到了同样的问题,我发现这个警告与模型不起作用的问题无关。我可以使模型像显示此警告一样工作。
我的错误是我误解了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
的检查点文件时,脚本将假定训练已完成并退出。删除检查点文件并重新启动训练即可。
在我的例子中,我遇到了同样的错误,因为我在我的 .cpkt 文件所在的文件夹中,也是预训练模型的检查点。
删除该文件进入 .tar.gz 文件,训练有效。
你的脚本看起来不错。
我们应该注意的一件事是,新的 model_main.py 不会打印训练日志(如训练步骤、lr、损失等)。它只打印一个或多个 epoches 后的评估结果,这将好久不见。
所以 "the process isn't terminated, but no further logs appear" 是正常的。你可以用"nvidia-smi"查看gpu的情况来确认它的运行,或者用tensorboard查看
我也收到这个错误,这是因为我之前在不同的 dataset/model/config 文件上训练了一个模型,并且之前的 ckpt 文件仍然存在于我正在使用的目录中,移动了旧的 ckpt将训练数据保存到不同的目录解决了这个问题
我也遇到过这个警告信息。我检查了 nvidia-smi
,似乎训练没有开始。还尝试重新组织输出目录,但没有成功。查看Configuring the Object Detection Training Pipeline (tensorflow official)后,发现是配置问题。通过添加 load_all_detection_checkpoint_vars: true
.