Введение

Вы ищете быстрое моделирование с глубоким обучением? Если так, то Керас будет вашим естественным выбором. Но сегодня доступно так много фреймворков для глубокого обучения, и их список очень быстро растет - зачем выбирать Keras?

У Keras есть возможность и ресурсы для работы поверх популярных библиотек глубокого обучения, таких как TensorFlow, Theano или CNTK. Он также предлагает относительно простой API, который также предлагает большую гибкость. Это упрощает изучение и использование Keras. Разве этого не достаточно, чтобы начать использовать Keras?

Чтобы продемонстрировать это, давайте рассмотрим быструю реализацию линейной регрессии с использованием Keras и Python.

Линейная регрессия - это основополагающий алгоритм машинного обучения, который отлично подходит для начала работы, поскольку основан на простой математике. Он работает по уравнению прямой линии, которое математически обозначается как y = mx + c, где m - наклон прямой, а c - точка пересечения. x - независимая переменная, а y - зависимая переменная.

Получите данные:

Итак, давайте сначала упорядочим наши данные. Для целей этого руководства у нас есть файл .csv с двумя переменными (x и y), и нам нужно реализовать линейную регрессию для этих данных. Сначала мы загружаем данные с помощью Pandas во фрейм данных и проверяем заголовок, как показано ниже:

После этого импортируем необходимые библиотеки и создаем последовательную модель с помощью Keras. Нам нужно реализовать NumPy, Pandas, Keras, keras.backend и TensorFlow. Обратите внимание, что здесь мы используем TensorFlow в качестве серверной части Keras.

Мы собираемся использовать следующие общие шаги для работы с моделями Keras:

  • Определите модель
  • Скомпилируйте модель
  • Подходит для модели
  • Прогнозирование с помощью модели
  • Проверить результат

Keras - это библиотека высокого уровня, которая предоставляет компоненты уровня модели для построения моделей глубокого обучения. Keras не предназначен для обработки таких операций, как тензорные произведения, свертки и т. Д. Следовательно, Keras зависит от других специализированных и оптимизированных библиотек тензорных манипуляций, таких как TensorFlow, Theano или CNTK, которые служат бэкэнд для данной модели Keras.

Присоединяйтесь к более чем 14000 ваших коллег по машинному обучению и исследователей данных. Подпишитесь на главную рассылку новостей по глубокому обучению.

Определите модель

В Keras есть класс Sequential ,, который представляет линейную группу слоев. Этот класс помогает нам создавать модели слой за слоем. Таким образом, используя Sequential, мы не можем создавать модели с общими слоями. Кроме того, Sequential не поддерживает создание моделей с несколькими входами или выходами. Мы можем использовать приведенный ниже импорт, чтобы получить Sequential:

from keras.models import Sequential

Как видно ниже, мы создали четыре плотных слоя. Плотный слой - это слой в нейронной сети, который полностью связан. Другими словами, все нейроны одного слоя связаны со всеми другими нейронами следующего слоя.

На первом уровне нам нужно предоставить форму ввода, которая в нашем случае равна 1. Мы выбрали функцию активации ReLU, что означает выпрямленная линейная единица.

ReLU математически определяется как F (x) = max (0, x). Другими словами, на выходе будет x, если x больше 0, и на выходе 0, если x равен 0 или отрицателен.

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

Составьте модель

Здесь мы используем RMSprop в качестве нашего оптимизатора. RMSprop означает среднеквадратичное распространение. Это один из самых популярных алгоритмов оптимизации градиентного спуска для сетей глубокого обучения. RMSprop - это надежный и быстрый оптимизатор.

Мы компилируем режим с помощью функции model.compile. Используемая здесь функция потерь - это среднеквадратичная ошибка. После компиляции модели воспользуемся методом fit с 500 эпохами.

Я начал со значениями эпох 100, а затем протестировал модель после обучения. Прогноз оказался не очень хорошим. Затем я увеличил количество эпох до 200 и снова протестировал модель. Точность немного улучшилась, но решил, что попробую еще раз. Наконец, на 500 эпохах я обнаружил приемлемую точность прогноза.

Подходит к модели:

Метод fit принимает три параметра; а именно x, y и количество эпох. Если во время обучения модели все пакеты данных просматриваются моделью один раз, мы говорим, что одна эпоха завершена. Ниже приведен выходной снимок для обучения модели. Как видите, в этом примере мы работаем с 500 эпохами. После каждой эпохи печатаем величину убытка. Вы можете ясно видеть, как потери меняются после каждой эпохи.

Прогнозирование с помощью модели

После завершения обучения следующим шагом является прогнозирование выходных данных с использованием обученной модели. Мы передаем случайный ввод 200 и получаем прогнозируемый результат 88,07, как показано выше.

Проверьте результат

Давайте проверим, что наш прогноз дает точный результат. Для этого мы построим линию линейной регрессии для данных. На графике ниже для x = 200 мы можем легко увидеть, что значение y должно быть около 90. И наш прогноз - y = 88. Следовательно, мы можем считать наш прогноз довольно точным.

Конец заметок

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

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

Удачного машинного обучения! :)

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

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.