странное (?) поведение в сети - PullRequest
0 голосов
/ 19 октября 2018

У меня есть предварительно обученная архитектура повторной сети imagenet (например, resnet18, но на один остаточный блок меньше).Сначала я использовал его для классификации «моноэтикетка».Это работало довольно хорошо.(4 класса)

Чтобы улучшить классификацию, я переключился на классификацию с несколькими метками с той же архитектурой.Я изменил классификатор с HingeLoss на SigmoidCrossEntropy.Если я не изменю что-либо еще, «точность» (*) моего поезда выравнивается на ~ 70%, а «точность» проверки в то же время составляет ~ 1% (!!!!) (такая же разница видна напотеря тоже).Если я изменяю функцию активации с ReLU на SoftMax, то точность поезда и валидации (и потери тоже) очень похожи, но точность выравнивается примерно на 30%.

Плохая точность становится понятной после измененияфункция активации, но общего поведения нет.Почему большое - казалось бы - переобучение можно увидеть с помощью ReLU, в то время как то же самое не было видно ни в классификации монослоя, ни в том случае, если я использую SoftMax?

... или я что-то неправильно понял?

(*) Я рассчитываю потери Хэмминга и использую их как «точность»

PS: Все реализовано в caffe.

...