Использование BatchNorm в PyTorch дает значительно низкую точность - PullRequest
0 голосов
/ 28 марта 2020

Я работаю над проблемой классификации изображений в пользовательском наборе данных, состоящем из 1888 обучающих изображений и 800 проверочных изображений (8 классов). Я пытался применить трансферное обучение, используя различные модели из библиотеки torchvision.models. Для каждой модели я использую предварительно обученные веса и тренирую только последний слой Linear, который выполняет классификацию. У меня есть следующие результаты на моем наборе проверки (используя batch size 32 и используя SGD with momentum в качестве оптимизатора с lr 0.001)

1. Alexnet - 93 
2. VGG16 - 93  
3. VGG16_bn - 57 
4. Resnet50 - 26
5. VGG19 - 91
6. VGG19_bn - 59 

Я повторил эксперименты с model.train() и model.eval() но результаты, похоже, не сильно меняются. Итак, исходя из результатов, я предполагаю, что модели со слоями BatchNorm работают очень плохо по сравнению с другими моделями, у которых их нет. Есть идеи, почему это может происходить? Любая помощь будет оценена. Спасибо!

Я посмотрел этот пост на форумах о возможном решении, которое включает увеличение значения импульса в конструкторе BatchNorm. Как именно я должен сделать это изменение? Нужно ли вручную изменять код batchnorm.py или есть ли лучший способ сделать это?

...