Pycharm:トレーニング/テストニューラルネットワークは実行スクリプトファイル(train.sh)によって起動され、プログラムエラー、debug操作はどのように行いますか?
11964 ワード
最近tf-faster-rcnnを利用して自分のデータセットを走る.検出効果をテストする.
训练部分はすでに走って通じて、ブログを见ます:リンク.
今テスト中にエラーが発生しました.Debugを行いたいのですが、実行するスクリプトファイルのテストなので、pyファイルを直接実行してデバッグすることはできませんので、ここにカードがあります.
スクリプト・ファイルは次のようになります(テスト・スクリプトの例).
テストコマンドを実行し、端末実行:
デバッグ方法:shファイルの次のパラメータをtestに追加します.py運転時
実際のパラメータは次のとおりです.
パスの問題:1.res101.ymlファイルと110000.ckptファイルの相対パスの書き込みペア;2.–set設定の
训练部分はすでに走って通じて、ブログを见ます:リンク.
今テスト中にエラーが発生しました.Debugを行いたいのですが、実行するスクリプトファイルのテストなので、pyファイルを直接実行してデバッグすることはできませんので、ここにカードがあります.
スクリプト・ファイルは次のようになります(テスト・スクリプトの例).
#!/bin/bash
set -x
set -e
#set -v
export PYTHONUNBUFFERED="True"
GPU_ID=$1
DATASET=$2
NET=$3
array=( $@ )
len=${#array[@]}
EXTRA_ARGS=${array[@]:3:$len}
EXTRA_ARGS_SLUG=${EXTRA_ARGS// /_}
case ${DATASET} in
pascal_voc)
TRAIN_IMDB="voc_2007_trainval"
TEST_IMDB="voc_2007_test"
# ITERS=70000 #
ITERS=110000
ANCHORS="[8,16,32]"
RATIOS="[0.5,1,2]"
;;
pascal_voc_0712)
TRAIN_IMDB="voc_2007_trainval+voc_2012_trainval"
TEST_IMDB="voc_2007_test"
ITERS=110000
ANCHORS="[8,16,32]"
RATIOS="[0.5,1,2]"
;;
coco)
TRAIN_IMDB="coco_2014_train+coco_2014_valminusminival"
TEST_IMDB="coco_2014_minival"
ITERS=490000
ANCHORS="[4,8,16,32]"
RATIOS="[0.5,1,2]"
;;
*)
echo "No dataset given"
exit
;;
esac
LOG="experiments/logs/test_${NET}_${TRAIN_IMDB}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`"
exec &> >(tee -a "$LOG")
echo Logging output to "$LOG"
set +x
if [[ ! -z ${EXTRA_ARGS_SLUG} ]]; then
# ckpt
NET_FINAL=output/${NET}/${TRAIN_IMDB}/${EXTRA_ARGS_SLUG}/${NET}_faster_rcnn_iter_${ITERS}.ckpt
else
NET_FINAL=output/${NET}/${TRAIN_IMDB}/default/${NET}_faster_rcnn_iter_${ITERS}.ckpt
fi
set -x
if [[ ! -z ${EXTRA_ARGS_SLUG} ]]; then
CUDA_VISIBLE_DEVICES=${GPU_ID} time python ./tools/test_net.py \
--imdb ${TEST_IMDB} \
--model ${NET_FINAL} \
--cfg experiments/cfgs/${NET}.yml \
--tag ${EXTRA_ARGS_SLUG} \
--net ${NET} \
--set ANCHOR_SCALES ${ANCHORS} ANCHOR_RATIOS ${RATIOS} \
${EXTRA_ARGS}
else
CUDA_VISIBLE_DEVICES=${GPU_ID} time python ./tools/test_net.py \
--imdb ${TEST_IMDB} \
--model ${NET_FINAL} \
--cfg experiments/cfgs/${NET}.yml \
--net ${NET} \
--set ANCHOR_SCALES ${ANCHORS} ANCHOR_RATIOS ${RATIOS} \
${EXTRA_ARGS}
fi
テストコマンドを実行し、端末実行:
./experiments/scripts/test_faster_rcnn.sh 0 pascal_voc res101
test_faster_rcnn.sh
ファイルを実行し、3つのパラメータGPUID=0を設定し、データセット:pascal_voc,ネットワークモデル:res 101デバッグ方法:shファイルの次のパラメータをtestに追加します.py運転時
Edit Configurations
のうちParameters
において.以下のパラメータを設定 --imdb ${TEST_IMDB} \
--model ${NET_FINAL} \
--cfg experiments/cfgs/${NET}.yml \
--net ${NET} \
--set ANCHOR_SCALES ${ANCHORS} ANCHOR_RATIOS ${RATIOS} \
${EXTRA_ARGS}
実際のパラメータは次のとおりです.
--imdb voc_2007_test --model ../output/res101/voc_2007_trainval/default/res101_faster_rcnn_iter_110000.ckpt --cfg ../experiments/cfgs/res101.yml --net res101 --set ANCHOR_SCALES [8,16,32] ANCHOR_RATIOS [0.5,1,2]
パスの問題:1.res101.ymlファイルと110000.ckptファイルの相対パスの書き込みペア;2.–set設定の
ANCHOR_SCALES '[8,16,32]'
は間違っています.単一引用符がないことに注意してください.一重引用符を使用すると、次のエラーが表示されます. type <class 'str'> does not match original type <class 'list'>