关于何时停止训练resnet50网络的建议(awx上的mxnet)

时间:2018-11-24 05:14:59

标签: python deep-learning mxnet resnet

我有一个约2万张图片的自定义数据集(其中10%用于验证)。 我在标签类0中大约有1/3,在标签类1中有1/3,没有标签0的类中有1/3,或者1个带有-1标签的对象。

我运行了大约400个纪元,最近40个纪元的验证mAP从0.817增加到0.831,训练交叉熵损失从0.377-> 0.356

the last epoch had validation mAP <score>=(0.83138943309)
train cross_entropy <loss>=(0.356147519184)
train smooth_l1 <loss>=(0.150637295831)
  1. 培训损失似乎仍然可以减少,但是我没有任何关于resnet的经验(在yolov3上,该数据集迅速降至.1以下)

  2. 我有1/3的训练图像的方法在任何一个班级都没有出席吗?在进行yolov3培训时,它似乎有助于网络避免误报。

  3. 是否有任何经验法则可以帮助我根据类/图像的数量来估计合适的时期?

  4. 要达到这一点,我要花100块钱才能买到aws,我不确定是否需要另外100块钱或1000块钱才能获得最佳的mAP-以目前的速度,它出现了1小时取得约1%的改善-我希望它会放慢速度。

  5. 我还应该查看其他指标吗? (如果是这样,我如何导出它们)?

  6. 我应该更改任何超参数并继续训练吗?

我的超参数是:

base_network='resnet-50',
num_classes=2,
mini_batch_size=32,
epochs=200,
learning_rate=0.001,
lr_scheduler_step='3,6',
lr_scheduler_factor=0.1,
optimizer='sgd',
momentum=0.9,
weight_decay=0.0005,
overlap_threshold=0.5,
nms_threshold=0.45,
image_shape=416,
label_width=480,
num_training_samples=19732)

谢谢, 约翰

1 个答案:

答案 0 :(得分:0)

自定义数据集很难提前说,因为您要处理许多不同的变量。跟踪验证mAP当然是告诉您何时停止的好方法。例如,mAP stops increasing或mAP正在趋于平稳。

因此,除此以外,我建议您看看使用相同架构和相似参数的其他人来获得洞见。您提到了一个自定义数据集,但是对于ImageNet,DAWNBench会发布该信息。例如,this page列出了每个时期的超参数,供您浏览相关的设置。

我也敦促您考虑对预训练的模型进行微调,以节省成本和计算量。参见“愿景”部分hereherehttps://github.com/apache/incubator-mxnet/issues/4616 有关微调FC层的信息。