wake-up-neo.com

Estimator's model_fn enthält das Argument params, aber die Parameter werden nicht an Estimator übergeben

Ich versuche, die Objekterkennungs-API lokal auszuführen. 

Ich glaube, ich habe alles wie in den TensorFlow Object Detection API -Dokumenten beschrieben eingerichtet. Wenn ich jedoch model_main.py ausführen möchte, wird diese Warnung angezeigt und das Modell trainiert nicht. (Ich kann nicht genau sagen, ob das Modell trainiert oder nicht, da der Prozess nicht beendet wird, aber keine weiteren Protokolle angezeigt werden.)

WARNUNG: Tensorflow: Estimator's model_fn (.model_fn bei 0x0000024BDBB3D158>) enthält Params-Argument, aber Params werden nicht an Estimator übergeben.

Der Code, den ich weitergebe, lautet: 

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

Was könnte diese Warnung auslösen? 

Warum scheint der Code stecken zu bleiben?

Bitte helfen 

5
Gabe

Ich bin auf das gleiche Problem gestoßen und habe festgestellt, dass diese Warnung nichts mit dem Problem zu tun hat, dass das Modell nicht funktioniert. Ich kann das Modell arbeiten lassen, da diese Warnung angezeigt wird. 

Mein Fehler war, dass ich die Zeile im Dokument von running_locally.md falsch verstanden habe

"$ {MODEL_DIR} zeigt auf das Verzeichnis, in das Trainingsprüfpunkte und Ereignisse geschrieben werden"

Ich habe MODEL_DIR in {project directory}/models/model geändert, wobei die Struktur des Verzeichnisses lautet:

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

Und es hat funktioniert. Ich hoffe, das kann dir helfen.

6
Yangcy

Dein Skript scheint gut zu sein. Eine Sache, die wir beachten sollten, ist, dass das neue model_main.py das Trainingsprotokoll (wie Trainingsschritt, lr, Verlust usw.) nicht druckt. Es wird nur das Evaluierungsergebnis nach einer oder mehreren Epochen gedruckt wird eine lange zeit sein.
"Der Prozess wird nicht beendet, aber es erscheinen keine weiteren Protokolle" ist normal. Sie können den Betrieb mit "nvidia-smi" überprüfen, um die GPU-Situation zu überprüfen, oder Tensorboard verwenden, um dies zu überprüfen.

0
lychenpan

In meinem Fall hatte ich den gleichen Fehler, weil ich innerhalb des Ordners hatte, in dem sich meine .cpkt-Dateien befanden, den Kontrollpunkt der vorgelernten Modelle.

Das Entfernen der Datei kam in die .tar.gz-Datei und das Training funktionierte.

 enter image description here

0
Arritmic

Ich bin auch auf diese Warnmeldung gestoßen. Ich überprüfte nvidia-smi und es schien, als hätte das Training noch nicht begonnen. Es wurde auch versucht, das Ausgabeverzeichnis neu zu organisieren, und es hat nicht funktioniert. Nach dem Auschecken Konfigurieren der Schulungspipeline für die Objekterkennung (tensorflow official) habe ich festgestellt, dass es ein Konfigurationsproblem war. Das Problem wurde durch Hinzufügen von load_all_detection_checkpoint_vars: true gelöst.

0
Yoyo

Ich habe auch diesen Fehler erhalten, und zwar weil ich zuvor ein Modell mit einer anderen Datensatz-/Modell-/Konfigurationsdatei trainiert hatte und die vorherigen ckpt-Dateien noch in dem Verzeichnis vorhanden waren, in dem ich arbeitete, und die alten ckpt-Trainingsdaten in eine andere verschieben Verzeichnis behoben das Problem

0
iggy12345