Я видел два разных подхода к Transfer Learning / Fine Tuning, и я не уверен в их различиях и преимуществах:
- Можно просто загрузить модель, например. Начало, инициализированное с весами, сгенерированными в результате обучения, например, Imagenet замораживает слои конвоя и добавляет несколько плотных слоев для адаптации к конкретной задаче классификации, над которой мы работаем. Вот некоторые ссылки: [1] , [2] , [3] , [4]
- В это руководство по блогу keras процесс кажется более запутанным: один раз прогоняет данные обучения / тестирования через модель VGG16 и записывает в двух отдельных массивах выходные данные из последних карт активации перед полностью подключенными слоями. Затем обучает небольшую полностью подключенную модель поверх сохраненных элементов (веса сохраняются, например, как
mini-fc.h5
). На этом этапе, если следует процедура, аналогичная подходу № 1, где он замораживает первые сверточные слои VGG16 (инициализированные с весами из imagenet) и обучает только последние конверсные слои и полностью связанный классификатор (который вместо этого инициализируется с весами из предыдущая часть обучения этого подхода, mini-fc.h5
). Эта окончательная модель затем обучается. Возможно, более поздняя версия этого подхода объяснена в разделе Тонкая настройка InceptionV3 нового набора классов этой страницы keras: https://keras.io/applications/
В чем разница / преимущества двух подходов? Это отличные примеры трансферного обучения против тонкой настройки? Последняя ссылка на самом деле просто пересмотренная версия метода # 2?
Спасибо за вашу поддержку