1. 程式人生 > >SSD Tensorflow訓練自己的資料集,遇到報錯absl.flags._exceptions.IllegalFlagValueError: flag --num_classes==: 求助

SSD Tensorflow訓練自己的資料集,遇到報錯absl.flags._exceptions.IllegalFlagValueError: flag --num_classes==: 求助

按照此部落格訓練到“五.訓練”這一步報錯。

連結:https://blog.csdn.net/Echo_Harrington/article/details/81131441

 

下面是bash 的   train.sh  檔案博主給的內容

DATASET_DIR=./tfrecords
TRAIN_DIR=./log/
CHECKPOINT_PATH=./checkpoints/ssd_300_vgg.ckpt/ssd_300_vgg.ckpt
python train_ssd_network.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${CHECKPOINT_PATH} \
    --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --batch_size=6 \
    --ignore_missing_vars = True \
    --num_classes = 21 \ #修改為自己的類別數+1
    --checkpoint_exclude_scopes =ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box \

下面是我的 train.sh  檔案

DATASET_DIR=/home/hp/zjc/Tensorflow/Deeplearning/dataset/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007_tfrecord
TRAIN_DIR=/home/hp/zjc/Tensorflow/Deeplearning/SSD-Tensorflow-master/log/
CHECKPOINT_PATH=/home/hp/zjc/Tensorflow/Deeplearning/SSD-Tensorflow-master/checkpoints/ssd_300_vgg.ckpt/ssd_300_vgg.ckpt
python /home/hp/zjc/Tensorflow/Deeplearning/SSD-Tensorflow-master/train_ssd_network.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${CHECKPOINT_PATH} \
    --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --batch_size=6 \
    --ignore_missing_vars = True \
    --num_classes = 21 \ #修改為自己的類別數+1
    --checkpoint_exclude_scopes =ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box \

下面是報錯結果

 錯誤如下:

File "/home/hp/anaconda3/lib/python3.6/site-packages/absl/flags/_flag.py", line 169, in _parse
    'flag --%s=%s: %s' % (self.name, argument, e))
absl.flags._exceptions.IllegalFlagValueError: flag --num_classes==: invalid literal for int() with base 10: '='

請問這個報錯什麼意思?

註釋掉類別數這一行之後可以執行,但是LOSS值不穩,正常嗎?

DATASET_DIR=/home/hp/zjc/Tensorflow/Deeplearning/dataset/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007_tfrecord
TRAIN_DIR=/home/hp/zjc/Tensorflow/Deeplearning/SSD-Tensorflow-master/log/
CHECKPOINT_PATH=/home/hp/zjc/Tensorflow/Deeplearning/SSD-Tensorflow-master/checkpoints/ssd_300_vgg.ckpt/ssd_300_vgg.ckpt
python /home/hp/zjc/Tensorflow/Deeplearning/SSD-Tensorflow-master/train_ssd_network.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${CHECKPOINT_PATH} \
    --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --batch_size=6 \
    --ignore_missing_vars = True \
    #--num_classes == 21 \  #修改為自己的類別數+1
    --checkpoint_exclude_scopes = ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box \

執行過程