Нейронный сети. Эволюция. Каниа Алексеевич Кан

Читать онлайн.



Скачать книгу

любым числом коэффициент крутизны наклона прямой

      A = 0.4

      A_vis = A # Запоминаем начальное значение крутизны наклона

      # Вывод данных начальной прямой

      print('Начальная прямая: ', A, '* X')

      # Скорость обучения

      lr = 0.001

      # Зададим количество эпох

      epochs = 3000

      # Создадим массив входных данных x

      arr_x = [1, 2, 3, 3.5, 4, 6, 7.5, 8.5, 9]

      # Создадим массив целевых значений (ответы Y)

      arr_y = [2.4, 4.5, 5.5, 6.4, 8.5, 11.7, 16.1, 16.5, 18.3]

      # Прогон по выборке

      for e in range(epochs):

      for i in range(len(arr_x)): # len(arr) – функция возвращает длину массива

      # Получить x координату точки

      x = arr_x[i]

      # Получить расчетную y, координату точки

      y = A * x

      # Получить целевую Y, координату точки

      target_Y = arr_y[i]

      # Ошибка E = целевое значение – выход нейрона

      E = target_Y – y

      # Меняем коэффициент при x, в соответствии с правилом A+дельтаA = A

      A += lr*(E/x)

      # Вывод данных готовой прямой

      print('Готовая прямая: y = ', A, '* X')

      Результатом ее работы будет функция готовой прямой:

      y = 2.0562708725692196 * X

      Для большей наглядности, что я специально указал данные в обучающей выборке, так чтобы они лежали около значений функции y = 2x. И после обучения нейрона, мы получили ответ очень близкий к этому значению.

      Было бы неплохо визуализировать все происходящие на графике прямо в Python.

      Визуализация позволяет быстро получить общее представление о том, что мы делаем и чего добились.

      Для реализации этих возможностей, нам потребуется расширить возможности Python для работы с графикой. Для этого необходимо импортировать в нашу программу, дополнительный модуль, написанный другими программистами, специально для визуализаций данных и функций.

      Ниже приведена инструкция, с помощью которой мы импортируем нужный нам пакет для работы с графикой:

      import matplotlib.pyplot as plt

      Кроме того, мы должны дополнительно сообщить Python о том, что визуализировать следует в нашем блокноте, а не в отдельном окне. Это делается с помощью директивы:

      %matplotlib inline

      Если не получается загрузить данный пакет в программу, то скорей всего его надо скачать из сети. Делать это удобно через Anaconda Prompt, который устанавливается вместе с пакетом Anaconda.

      Для системы Windows, в Anaconda Prompt вводим команду:

      conda install matplotlib

      И следуем инструкциям. Для других операционных систем возможно потребуется другая команда.

      Теперь мы полностью готовы к тому, чтобы представить наши данные и функции в графическом виде.

      Выполним код:

      import matplotlib.pyplot as plt

      %matplotlib inline

      # Функция для отображения входных данных

      def func_data(x_data):

      return [arr_y[i] for i in range(len(arr_y))]

      # Функция для отображения начальной прямой

      def func_begin(x_begin):

      return [A_vis*i for i in x_begin]

      # Функция для отображения готовой прямой

      def func(x):

      return [A*i for i in x]

      # Значения по X входных данных

      x_data = arr_x

      # Значения по X начальной прямой (диапазон значений)

      x_begin = [i for i in range(0, 11)]

      # Значения по X готовой прямой (диапазон значений)

      x