Абстракция:

В этой статье мы хотели бы представить руководство по созданию нейронной сети для классификации набора данных CIFAR10 с использованием архитектуры ResNet50. окончательный тест привел к точности 91%.

Введение:

Глубокое обучение — это один из прорывов в области искусственного интеллекта, и он освободил место для некоторых из удивительных приложений, которые у нас есть сегодня, таких как распознавание лиц и чат-боты для обслуживания клиентов. Для создания этих приложений требуется МНОГО данных, и иногда эти данные недоступны в больших количествах. Именно здесь вступает в действие трансферное обучение. Трансферное обучение — это, по сути, когда модель машинного обучения берет то, чему она научилась, решая одну проблему, и применяет это к другой проблеме аналогичного характера. В результате для решения последней задачи вам потребуется лишь небольшой объем данных.

Проще говоря, трансферное обучение — это «использование знаний нейронной сети, полученных путем обучения одной задаче, для применения их к другой задаче».

Материал и методы:

База данных:

Набор данных CIFAR-10 состоит из 60000 цветных изображений 32x32 в 10 классах, по 6000 изображений в каждом классе. Есть 50000 обучающих изображений и 10000 тестовых изображений.

Набор данных разделен на пять обучающих пакетов и один тестовый пакет, каждый из которых содержит 10 000 изображений. Тестовая партия содержит ровно 1000 случайно выбранных изображений из каждого класса.

Керас:

наша среда использует keras — мощную и простую в использовании бесплатную библиотеку Python с открытым исходным кодом для разработки и оценки моделей глубокого обучения.

Он объединяет эффективные библиотеки численных вычислений Theano и TensorFlow и позволяет определять и обучать модели нейронных сетей всего несколькими строками кода.

Тогда давайте начнем наш проект шаг за шагом:

Загрузить CIFAR10 :

Обрабатывает данные для вашей модели:

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

Загрузите предварительно обученную модель ResNet50:

Мы замораживаем веса модели, установив для обучения значение «False». Это останавливает любые обновления предварительно обученных весов во время обучения. Мы не хотим обучать слои ResNet, поскольку мы хотим использовать знания, полученные глубокой нейронной сетью, обученной на основе предыдущего набора данных, которым в нашем случае является «imagenet».

Теперь мы создаем нашу модель с использованием трансферного обучения с использованием предварительно обученного ResNet50, добавляя наш собственный полностью подключенный слой и окончательный классификатор с помощью функции активации softmax.

используя такие методы оптимизации: Мы протестировали RMSprop. Мы использовали RMSprop с 5 эпохами, чтобы получить наш результат.

теперь мы запускаем модель

Сохранение тренированных весов

Результаты:

Мы получили точность 89,55% на тренировочном наборе и 91,24% на проверке с 10 эпохами.

Обсуждение:

Эти результаты позволяют сделать вывод, что:

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

Благодарности:

Яблагодарю всех своих друзей из школы Holberton за помощь и новые ресурсы, а также двух доцентов школы holberton в Тунисе: г-жу Умайму Марбене и г-жу Мерьем Азуз за руководство в ходе этого проекта.

Процитированная литература: