Назначение уровней FC в ConvNet - только для выполнения классификации по вашей проблеме. Вы могли бы просто использовать окончательный сплющенный вывод с вашего последнего слоя Conv/Pooling в качестве встроенных функций и поместить его в другую модель машинного обучения, и это будет иметь тот же эффект.
Это означает, что параметры, изученные уровнями FC, в большинстве случаев очень специфичны (зависит от данных) и в большинстве случаев не могут быть переданы.
Так что всякий раз, когда люди настраиваются на предварительно подготовленную модель, они почти всегда сбрасывают слои FC сверху.
Теперь вы можете пройти 2 пути отсюда.
- Используйте окончательный сплющенный вывод с последнего слоя Conv/Pooling как извлеченные функции для вашей проблемы и подготовьте модель ML на нем. Этот метод обычно используется, если ваш набор данных мал или не похож на предварительно подготовленную модель.
- Получите извлеченные функции, используя описанный выше метод, а затем используйте их для обучения нейронной сети FC. Как только вы достигли приличного уровня точности, он поверх последнего уровня conv/pooling предварительно подготовленной модели (не забудьте удалить слои FC orignal). Теперь замораживание (параметры сделаны постоянными и не меняются при обучении) большая часть предварительно подготовленной модели и позволяют только обучать последние несколько conv-слоев. Теперь обучите всю сеть тренироваться с очень небольшой скоростью обучения.
Весь смысл замораживания большей части модели состоит в том, что мы предполагаем, что модель уже знает основные элементы, такие как обнаружение границ и цвет из более ранних слоев conv. Теперь мы тщательно настроим последние несколько слоев для нашей проблемы. Мы выбрали небольшую скорость обучения, чтобы мы не переставали испортить то, что уже изучила модель.
Причина, по которой мы тренируем слои FC, прежде чем мы подгоняем их на предварительно обученную модель, - это просто экономить время обучения и, что более важно, чтобы мы не вносили существенных изменений в слои Conv и заканчивали фитинг.
Большое вам спасибо! Я размышлял. У меня почти 1,5 М изображений со 100 классами, которые, как я полагаю, не являются тривиальной суммой. Будет ли это достаточно много, чтобы тренировать слои 2 ~ 3 fc и по-прежнему избегать переобучения? – ytrewq
@CosmicRabbitMediaInc выглядит достаточно, чтобы тренировать всю сеть. Удачи – Shai