Я работаю над подходом класса class-incremental classifier с использованием CNN в качестве экстрактора функций и полностью подключенного блока для классификации.
Во-первых, я сделал тонкую настройку VGG для каждой тренированной сети, чтобы выполнить новую задачу. Когда сеть обучается новой задаче, я храню несколько примеров для каждого класса, чтобы не забывать, когда доступны новые классы.
Когда некоторые классы доступны, я должен вычислить каждый вывод экземпляров, включенных в примеры для новых классов. Теперь добавив нули к выводам для старых классов и добавив метку, соответствующую каждому новому классу, на выходе новых классов, у меня есть мои новые ярлыки, т.е. если вводятся 3 новых класса.
Старый тип типа: [0.1, 0.05, 0.79, ..., 0 0 0]
Новый тип типа: [0.1, 0.09, 0.3, 0.4, ..., 1 0 0]
** последние выходы соответствуют классу.
Мой вопрос в том, как я могу изменить функцию потерь для пользовательской, которая будет тренироваться для новых классов? Функция потери, которую я хочу реализовать, определяется как:
где потери дистилляции соответствуют выходам старых классов, чтобы избежать забывания, а потеря классификации соответствует новым классам.
Если вы можете предоставить мне образец кода для изменения функции потерь в keras, было бы неплохо.
Спасибо!!!!!