Модуль 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:
Первоначально W и b присвоены произвольные значения, не равные искомым. Соответственно, построенная на их основе прямая y=3*x + 0 плохо описывает данные:
Затем для настройки модели ее требуется скомпилировать (compile) и обучить (fit). В методе compile зададим оптимизатор со скоростью обучения и функцию потерь (подробнее здесь), а в fit - наблюдаемые данные, количество эпох и размер пакетов :
После попытаемся предсказать значение сети для x=[8,31,2]:
Убедимся в том, что параметры модели W и b соответствуют ожиданиям:
Ниже представляю полный код скрипта: