Найти тему
Властелин машин

Простой способ создания нейросети

Модуль Keras библиотеки TensorFlow позволяет просто и быстро создать нейронную сеть. Рассмотрим как это сделать на примере.

Поставим задачу построения модели предсказания y по x. В демонстрационных целях в качестве обучающих данных положим 1000 точек x из интервала от 0 до 5 и соответствующих им у, изменяющихся по закону 7x + 5 +noise, где noise - набор случайных чисел со стандартным нормальным распределением.

В основе нашей модели будет лежать один нейрон, который умножает свой вход на коэффициент W и прибавляет к нему свободный член b. Соответственно, в этих условиях для успешного прогнозирования очередного y по x у нейрона не будет выхода, кроме как установить свои параметры в окрестности W=7 и b =5.

Кому интересно, аналогичная задача была рассмотрена ранее без использования Keras. Однако в данном случае решение станет еще проще.

Зададим модель нейрона как подкласс tf.keras.Model, и реализуем описанную операцию в служебном методе call:

-2

Первоначально W и b присвоены произвольные значения, не равные искомым. Соответственно, построенная на их основе прямая y=3*x + 0 плохо описывает данные:

-3
-4

Затем для настройки модели ее требуется скомпилировать (compile) и обучить (fit). В методе compile зададим оптимизатор со скоростью обучения и функцию потерь (подробнее здесь), а в fit - наблюдаемые данные, количество эпох и размер пакетов :

-5

После попытаемся предсказать значение сети для x=[8,31,2]:

-6

Убедимся в том, что параметры модели W и b соответствуют ожиданиям:

-7

Ниже представляю полный код скрипта:

-8