虽然在slim model中声明train_image_classifier.py可用于从头开始训练模型,但我发现在实践中很难 . 就我而言,我试图在6xK80s的本地机器上从零开始训练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

我按照文章中的建议进行了相同的设置 . 我在本地计算机上使用8个GPU并使用batch_size 32,因此有效批处理大小为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}

由于缺乏工作示例,很难说苗条训练代码中是否存在错误或我的脚本中存在问题 . 我的剧本有什么不对吗?有没有人成功地从头开始训练怨恨?