Трансферное обучение

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

ЗАЧЕМ ПЕРЕНОСИТЬ ОБУЧЕНИЕ?

Хорошо известно, что сверточные сети требуют значительных объемов данных и ресурсов для обучения.

Для исследователей и практиков стало нормой использовать трансферное обучение и тонкую настройку (то есть перенос сетевых весов, обученных в предыдущем проекте, таком как ImageNet, на новую задачу).

Можно сделать два подхода.

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

Импорт модулей и замораживание слоев

В первую очередь импортируем необходимые модули и библиотеки. Keras — одна из библиотек Python, используемых в машинном обучении. Итак, здесь мы должны импортировать различные подмодули и функции, которые требуются в нашей программе. Поскольку мы используем архитектуру VGG16, мы импортировали функцию VGG16. Затем замораживаем слои.

Теперь мы создадим функцию с именем new, в которой мы определим новые слои, которые будут добавлены к существующей модели.

Теперь мы определим путь, по которому присутствуют данные обучения и проверки.

train_generator возьмет входные данные из каталогов и изменит их размер в соответствии с VGG. Точно так же подойдет validation_generator.

Здесь мы используем PMSprop в качестве оптимизатора.

мы будем использовать Model Checkpoint для сохранения модели. Только лучшая модель будет выбрана в соответствии с потерей стоимости.

Затем мы компилируем и сохраняем модель.

Тестирование модели

Теперь мы находимся на последнем этапе, т.е. тестировании нашей модели. На этом этапе мы предоставляем нашей модели те изображения, которые не представлены ни в обучающем наборе, ни в тестовом наборе, чтобы мы могли проверить, правильно или неправильно предсказывает наша модель. Итак, для этого сначала мы импортируем необходимые модули, а затем загружаем модель, которую мы обучили ранее. И, наконец, мы предсказываем с помощью функции predict() и декодируем ее вывод.