web-dev-qa-db-ja.com

Estimatorのmodel_fnにはparams引数が含まれていますが、paramsはEstimatorに渡されません

オブジェクト検出APIをローカルで実行しようとしています。

TensorFlow Object Detection API ドキュメントで説明されているようにすべてが設定されていると思いますが、model_main.pyを実行しようとすると、この警告が表示され、モデルがトレーニングされません。 (プロセスが終了していないため、モデルがトレーニングであるかどうかは本当にわかりませんが、それ以上のログは表示されません)

警告: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

この警告の原因は何ですか?

コードが動かなくなったのはなぜですか?

助けてください!

6
Gabe

同じ問題に遭遇したところ、この警告はモデルが機能しないという問題とは関係がないことがわかりました。この警告が示すように、モデルを機能させることができます。

私の間違いは、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

そしてそれはうまくいった。これがあなたを助けることを願っています。

Edit:これは機能する可能性がありますが、この場合model_dirには、保存されているチェックポイントファイルが含まれていません。チェックポイントファイルが保存された後でトレーニングを停止して再起動すると、トレーニングはまだスキップされます。 docrecommendedディレクトリ構造を指定しますが、tfrecordへのすべてのパスと同じ構造である必要はありません。事前トレーニング済みのチェックポイントは、設定ファイル。

実際の理由は、model_dirにすでにNUM_TRAIN_STEPに達したチェックポイントファイルが含まれている場合、スクリプトはトレーニングが終了したと見なして終了します。チェックポイントファイルを削除し、トレーニングを再開してください。

12
Yangcy

私の場合、.cpktファイルが格納されているフォルダー内に、事前トレーニング済みモデルのチェックポイントも含まれていたため、同じエラーが発生しました。

そのファイルを削除すると、.tar.gzファイルの中にあり、トレーニングはうまくいきました。

enter image description here

1
Arritmic

私もこのエラーを受け取りました。これは、以前に別のデータセット/モデル/構成ファイルでモデルをトレーニングしたことがあり、以前のckptファイルが作業中のディレクトリにまだ存在していたため、古いckptトレーニングデータを別のデータに移動しましたディレクトリは問題を修正しました

1
iggy12345

あなたのスクリプトは良いようです。注意すべきことの1つは、新しいmodel_main.pyがトレーニングのログを出力しないことです(トレーニングステップ、lr、損失など)。1つまたは複数のエポックの後の評価結果のみが出力されます。長い時間。
したがって、「プロセスは終了しませんが、それ以上のログは表示されません」が正常です。 「nvidia-smi」を使用してGPUの状況を確認するか、テンソルボードを使用して確認することで、実行を確認できます。

0
lychenpan

この警告メッセージにも遭遇しました。 nvidia-smiを確認したところ、トレーニングが開始されていないようです。また、出力ディレクトリを再編成しようとしましたが、うまくいきませんでした。チェックアウト後 オブジェクト検出トレーニングパイプラインの構成(tensorflow公式) 、それは構成の問題であることがわかりました。 load_all_detection_checkpoint_vars: trueを追加して問題を解決しました。

0
Yoyo