Я намереваюсь:
- Обучать NASNet с нуля на наборе данных
- Переучивать только последний слой NASNet (трансферное обучение)
и сравните их относительные показатели.Из документации я вижу:
keras.applications.nasnet.NASNetLarge(input_shape=None, include_top=True, weights='imagenet', input_tensor=None, pooling=None, classes=1000)
Однако документация немного сбивает с толку.
Вопросы:
Для обучения переносу я должен установить include_top = True
и classes = (num_classes)
, заморозить все слои, кроме последнего, затем обучить этому?
Требуется ли наличие входных изображений втакой же формы, как указано?NASNet требует (331,331,3), но это довольно много, и я вижу, как imagenet обучается с разным размером.Можно ли использовать изображения меньшего размера, например (120,120,3), и заменить верхний слой?Это все равно будет считаться трансферным обучением, верно?Тем не менее, последний слой NASNet, по-видимому, является ячейкой особого типа, как бы я это реализовал?
Если я хочу тренироваться с нуля, могу ли я подтвердить, что я установил include_top = False
и добавить полностью подключенные слои в конец?
В идеале, если есть учебник, в котором показано, как обучить NASNet с нуля, а также посредством обучения переносу на новый набор данных, который был бы полезен,Я нашел один для imagenet, но он сам построил слои модели вместо использования keras.applications
.