Я работаю над проблемой классификации изображений в пользовательском наборе данных, состоящем из 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
или есть ли лучший способ сделать это?