Использование сверточной нейронной сети

Обновление: вот мой Репозиторий Github, где вы можете найти мой скрипт Python для этого поста.

Обзор:

Fashion MNIST содержит изображения одежды 10 различных классов, таких как пальто, платья, рубашки и так далее. Каждое изображение имеет размер 28x28 оттенков серого. Fashion MNIST состоит из 70 000 изображений, из них 60 000 для обучения и 10 000 для тестирования. В этом посте я собираюсь объяснить, как я классифицирую набор данных Fashion-MNIST с помощью Keras,с помощью сверточной нейронной сети.

Загрузить данные с помощью Keras

  • из keras.datasets импортировать fashion_mnist
  • (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

Взгляните на изображение:

Предварительная обработка и изменение данных

  1. Измените масштаб изображения, разделив значение каждого пикселя на 255, это приведет к масштабированию объектов в диапазоне [0,1], прежде чем оно окажется между [0, 255].
  2. Измените форму обучающего набора с (60000, 28, 28) на (Нет, 28, 28, 1): первый слой нейронной сети ожидает, что входные данные будут иметь форму (Нет, 28, 28, 1)
  3. Преобразование вывода в одномерный вектор размера 10 [0,0,0,0…,1]: последний слой модели имеет 10 нейронов, что означает, что на выходе нашей модели будет одномерный вектор размера 10.
  4. Разделите обучающие данные на обучающий и проверочный наборы

Однослойная модель нейронной сети

  • Моя первая модель состояла из 1 слоя свертки, за которым следовал слой с максимальным объединением и слой отсева. Затем выходные данные были сглажены и переданы в полностью связанный слой из 64 нейронов. Окончательный выходной слой содержал 10 нейронов,

Обучение с пакетом_размером 512 и 50 эпох:

Точность проверки сильно колебалась в этой модели. Более того, после 20 эпох точность проверки была ниже точности обучения, что означает, что эта модель переобучила данные обучения. Ту же картину можно наблюдать на графике потерь при обучении и проверке.

Трехслойная модель нейронной сети

Моя вторая модель нейронной сети состояла из трех слоев свертки, за каждым из которых следовал слой максимального объединения и слой исключения. Выходные данные третьего выпадающего слоя выравниваются и передаются в полносвязный слой со 128 нейронами. Окончательный выходной слой состоял из 10 нейронов.

Обучение с пакетом_размером 512 и 50 эпох:

Трехслойная модель CNN дает гораздо лучший результат проверки и точность тестирования, чем однослойная модель CNN. Это дает точность теста 92,37% по сравнению с 90,49% для однослойной модели.