4

スリムモデルでは、train_image_classifier.py を使用してゼロからモデルをトレーニングできると記載されていますが、実際には難しいと感じました。私の場合、6xK80 を搭載したローカル マシンで ResNet をゼロからトレーニングしようとしています。私はこれを使用しました:

DATASET_DIR=/nv/hmart1/ashaban6/scratch/data/imagenet_RF_record
TRAIN_DIR=/nv/hmart1/ashaban6/scratch/train_dir
DEPTH=50
NUM_CLONES=8

CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7,8" python train_image_classifier.py --train_dir=${TRAIN_DIR} --dataset_name=imagenet --model_name=resnet_v1_${DEPTH} --max_number_of_steps=100000000 --batch_size=32 --learning_rate=0.1 --learning_rate_decay_type=exponential --dataset_split_name=train --dataset_dir=${DATASET_DIR} --optimizer=momentum --momentum=0.9 --learning_rate_decay_factor=0.1 --num_epochs_per_decay=30 --weight_decay=0.0001 --num_readers=12 --num_clones=$NUM_CLONES

論文で提案されているのと同じ設定に従いました。batch_size 32 のローカル マシンで 8 つの GPU を使用しているため、有効なバッチ サイズは 32x8=256 です。学習率は最初は 0.1 に設定されており、30 エポックごとに 10 ずつ減衰します。70K ステップ (70000x256/1.2e6 ~ 15 エポック) の後、検証セットのトップ 1 のパフォーマンスは ~14% と低くなりますが、多くの反復の後では約 50% になるはずです。このコマンドを使用して、トップ 1 のパフォーマンスを取得しました。

DATASET_DIR=/nv/hmart1/ashaban6/scratch/data/imagenet_RF_record
CHECKPOINT_FILE=/nv/hmart1/ashaban6/scratch/train_dir/
DEPTH=50

CUDA_VISIBLE_DEVICES="10" python eval_image_classifier.py --alsologtostderr --checkpoint_path=${CHECKPOINT_FILE} --dataset_dir=${DATASET_DIR} --dataset_name=imagenet --dataset_split_name=validation --model_name=resnet_v1_${DEPTH}

実際の例が不足しているため、スリムなトレーニング コードにバグがあるのか​​、それともスクリプトに問題があるのか​​を判断するのは困難です。私のスクリプトに何か問題がありますか?再送信をゼロから正常にトレーニングした人はいますか?

4

0 に答える 0