Этот блог посвящен моим друзьям, которые хотят изучать AI/ML/глубокое обучение.

Изучите набор данных классификации рассады растений в Kaggle по ссылке https://www.kaggle.com/c/plant-seedlings-classification. В нем есть обучающие изображения саженцев 12 видов растений, организованные по папкам. Каждое изображение имеет имя файла, которое является его уникальным идентификатором. Цель конкурса — создать классификатор, способный определять вид растения по фотографии. Набор тестов, который нам нужен, чтобы предсказать вид каждого изображения.

Вы можете скачать этот код здесь.

Запустите новое ядро. Сначала импортируйте все необходимые модули Python.

Мы можем просмотреть содержимое каталога ../input/train, чтобы увидеть, что в нем содержится. Создайте две функции, которые преобразуют строковые классы саженцев растений в целочисленные и обратные. Это только для красоты.

Затем мы устанавливаем параметры модели, такие как эпоха, скорость обучения, размер партии. Чем больше мы их настроим, тем лучше будут результаты.

При обучении нейронной сети одна эпоха означает один проход полного обучающего набора. Размер пакета означает количество обучающих примеров, используемых в одной итерации. Вот блог, который объясняет скорость обучения.

Затем мы читаем изображения обучающих данных. Изменяем размер всех изображений на 128*128.

Затем мы создаем модель, используем 3 слоя с функцией активации ReLU и в последний слой добавляем слой «softmax».

В контексте искусственных нейронных сетей выпрямитель — это функция активации. Это позволяет лучше обучать более глубокие сети по сравнению с широко используемыми функциями активации до 2011 года, то есть «логистической сигмоидой и ее более практичным аналогом, гиперболическим тангенсом. Выпрямитель — по состоянию на 2018 год самая популярная функция активации для глубоких нейронных сетей. Блок, использующий выпрямитель, также называется выпрямленным линейным блоком (ReLU).

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

Мы использовали функцию потерь, категориальную кросс-энтропийную функцию и оптимизатор Адама.

Затем мы читаем раздел обучающих данных в пропорции 75:25, компилируем модель и сохраняем ее. Мы также использовали увеличение изображения. Мы добавили генератор данных изображения, чтобы генерировать больше изображений, слегка сдвигая текущие изображения.

Следующим шагом является создание графиков matplotlib и чтение тестовых данных.

Результат этого показан ниже:

Следующим шагом является создание файла CSV для тестовых данных и загрузка его на конкурс.

использованная литература

Первоначально опубликовано на meenavyas.wordpress.com