Несколько уровней точности в Caffe

Я пытаюсь классифицировать большой набор изображений, используя nVidia DIGITS и Caffe. Все работает хорошо, когда я использую стандартные сети и сети, которые я построил.

Однако, когда я запускаю пример GoogleNet, я вижу результаты нескольких уровней точности. Как может быть несколько уровней точности в CNN? Наличие нескольких уровней потерь вполне понятно, но что означают несколько значений точности? Я получаю несколько графиков точности во время обучения. Подобно этой картинке: процесс обучения

lossX-top1 и lossX-top5 обозначают уровни точности. Я понимаю из prototxt, что они оценивают первые 1 и первые 5 значений точности, но что такое уровни точности lossX?

Несмотря на то, что некоторые из этих графиков сходятся примерно к 98%, когда я вручную тестирую обученную сеть на 'validation.txt', я получаю значительно более низкое значение (соответствующее трем нижним графикам точности).

Может ли кто-нибудь пролить свет на это? Как может быть несколько уровней точности с разными значениями?


person Igor Ševo    schedule 06.10.2015    source источник


Ответы (1)


Если вы внимательно посмотрите на 'train_val.prototxt', вы заметите, что действительно есть несколько уровней точности, ответвляющихся от основного «пути» на разных уровнях. loss1 оценивается после слоя inception 4a, loss2 оценивается после inception 4d, а loss3 - это потеря в верхней части сети. Введение потерь (и уровней точности) в промежуточные представления глубокой сети позволяет ускорить распространение градиента во время обучения. Эти промежуточные точности измеряют, насколько хорошо сошлись промежуточные представления.

person Shai    schedule 06.10.2015
comment
Итак, когда сеть используется для классификации случайного изображения после обучения, какой из слоев будет использоваться для определения класса? Самый глубокий? - person Igor Ševo; 06.10.2015
comment
@IgorŠevo это зависит от твоего deploy.prototxt. Вы можете решить, из какого слоя классификатора считывать вероятность класса. - person Shai; 06.10.2015
comment
Я неправильно понял значение слоя точности? Он используется для классификации проверочного набора (если он установлен в prototxt) и возвращает точность классификации? - person Igor Ševo; 06.10.2015
comment
@IgorŠevo каждый уровень точности измеряет точность проверки для разных слоев классификации (выходные данные слоя softmax). - person Shai; 06.10.2015
comment
Еще один вопрос. Как выбрать классификатор в deploy.prototxt? Назвав слой prob? - person Igor Ševo; 06.10.2015
comment
@IgorŠevo, это зависит от того, какой интерфейс вы используете для классификации, оболочка python classifier.py по умолчанию выводит последний выходной слой (слой, который ни один другой слой не использует верхним слоем как нижним...) Однако вы можете указать классификатор pytohn список имен больших двоичных объектов и получить несколько выходных данных за прямой проход. - person Shai; 06.10.2015
comment
Классификатор Python устарел, хотя @IgorŠevo - person ; 03.12.2016