Tensorflow — это платформа с открытым исходным кодом для машинного обучения, разработанная Google. В этом посте мы создадим модель нейронной сети для изучения постоянной функции. т. е. y = k (где k — постоянное действительное число) с использованием библиотеки python для tensorflow.

Этого можно достичь, используя только один слой, содержащий один нейрон. В этом примере мы используем плотный слой библиотеки tensorflow.

Ради интереса давайте установим значение константы, которую мы хотим выучить, равной π.

Следующий код импортирует необходимые пакеты.

Настройка данных тренировки

Теперь мы настроим обучающие данные. Обучающие данные просто содержат числа от 0 до 5000, а соответствующий вывод — просто π. Очевидно, что результат вообще не зависит от входных обучающих данных! В нейронной сети это изучается с помощью термина смещения.

Настройте и изучите модель

С настройкой обучающих данных теперь давайте построим модель нейронной сети. Мы используем последовательную модель кераса, содержащую один плотный слой. Плотный слой — один из самых основных слоев в Tensorflow. Он соединяет все входы со всеми выходами.

Однако в нашем случае у нас есть только один нейрон, который «неявно» принимает входные данные для обучения (указаны с помощью параметра input_shape в конструкторе объектов Dense).

Мы используем «выпрямленный линейный выход» или функцию активации ReLU. Функция активации нейрона действует на взвешенную сумму его входов. Выпрямленный линейный выход просто проходит по этой взвешенной сумме, если сумма больше нуля. В противном случае ReLU передает 0 как выход нейрона.

Мы компилируем модель, вызывая метод компиляции объекта Sequential model и указываем параметры оптимизатора и функции потерь. Функция потерь определяет, насколько далеко выход модели от заданного результата обучения. Задача функции оптимизатора состоит в том, чтобы свести к минимуму эти потери, поскольку модель обучается путем повторного прохождения обучающих данных.

Функция подгонки модели Sequential выполняет фактическое «обучение». Мы передаем входные данные обучения в параметре x, выходные данные обучения или «метки» в параметре y. Мы обучаем сеть, пройдя 500 сотен раундов обучающих данных. Это указывается с помощью параметра эпохи.

Проверка веса плотного слоя

Наша модель уже обучена. Под «обучением» мы подразумеваем, что вес и смещение нейрона в плотном слое были установлены так, чтобы функция потерь была минимизирована. Чтобы просмотреть, каковы эти веса, мы можем использовать код ниже.

Мы ожидаем, что вес и смещение будут равны 0 и π соответственно.

Прогноз

Наша модель готова. Мы можем использовать его, чтобы делать прогнозы. Когда мы вводим какие-либо данные в модель, мы ожидаем, что она выдаст πбольше или меньше.

Вот и все. Это наша модель тензорного потока для изучения постоянной функции.

Ниже приведен полный код, который вы можете попробовать самостоятельно.