Добавить слой регрессии в MatConvNet

Я разработал систему обнаружения улыбки. эта система основана на глубоком обучении и была реализована компанией MatConvnet. Последний слой является выходом системы и имеет 10 выходов в зависимости от количества улыбки человека. Я хочу преобразовать эти десять выходных данных в числовой вывод в диапазоне от 1 до 10 с помощью слоя регрессии. Как я могу сделать это в MatConvNet. Спасибо


person MHS    schedule 07.04.2015    source источник


Ответы (1)


Для слоя регрессии вам придется заменить последний слой (обычно softmax или softmaxloss) CNN своим собственным слоем для регрессии.

Чтобы определить свой собственный слой в MatConvNet, вам необходимо иметь следующее:

  1. Функция потерь
  2. Градиент этой функции потерь

Популярным выбором функции регрессионных потерь является возврат ошибки в квадрат. Вы должны посмотреть, как softmaxloss реализовано в MatConvNet и как оно вызывается в examples/cnn_train.m. Более подробную информацию можно найти в документах MatConvNet и в кратком руководстве по обратному распространению квадратичных потерь здесь< /а>.

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

Назначьте номера от 1 до 10 вашим 10 классам улыбок. CNN даст апостериорную вероятность P(1...10) по всем этим классам для входного изображения. Просто возьмите взвешенную сумму над метками классов ( 1 * P (1) + 2 * P (2) + ....), чтобы получить действительное число для количества улыбки.

person AruniRC    schedule 30.04.2015