Материал: Лабораторная работа 5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рисунок 3 — 100 точек, 5 лагов, (0 ,10 ]

Рисунок 4 — 100 точек, 5 лагов, (0 ,10 ]

, цель 0.01 (3)

, цель 0.01 (4)

Рисунок 5 — 100 точек, 5 лагов, (0 ,10 ] , цель 0.01 (5)

Графики сильно отличаются, хотя параметры и код никак не изменялись. Тому есть несколько причин:

1. На интервале (0 ,10 ] приведенная в задании функция не может быть аппроксимирована достаточно точно. (Поведение функции не может быть достаточно точно определено на малой совокупности данных.)

6

2. Число точек n и число лагов b слишком малы для обучения сети. Для второго промежутка нахождения решения (0 ,20 ] получим

следующие возможные результаты (рис. 6, 7, 8).

Рисунок 6 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (1)

Рисунок 7 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (2)

Рисунок 8 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (3)

В данных случаях функция аппроксимируется точнее, т. к. диапазон увеличился в 2 раза — поведение функции прогнозировать легче. Однако

7

число точек и число лагов остались прежними, а значит могут быть редкие исключения (рис. 9).

Рисунок 9 — 100 точек, 5 лагов, (0 ,20 ] , цель 0.01 (4)

Для третьего промежутка нахождения решения (0 ,30 ] получим следующие возможные результаты (рис. 10, 11, 12).

Рисунок 10 — 100 точек, 5 лагов, (0 ,30 ] , цель 0.01 (1)

Рисунок 11 — 100 точек, 5 лагов, (0 ,30 ] , цель 0.01 (2)

8

Рисунок 12 — 100 точек, 5 лагов, (0 ,30 ] , цель 0.01 (3) Аппроксимация стала немного точнее.

Теперь поменяем число лагов b=50 и цель goal=0.000001 .

Для первого промежутка нахождения решения (0 ,10 ] получим следующие возможные результаты (рис. 13, 14).

Рисунок 13 — 100 точек, 50 лагов, (0 ,10 ] , цель 1e-6 (1)

Рисунок 14 — 100 точек, 50 лагов, (0 ,10 ] , цель 1e-6 (2)

9

(0 ,30 ]

Для второго промежутка нахождения решения (0 ,20 ] получим следующий возможный результат (рис. 15).

Рисунок 15 — 100 точек, 50 лагов, (0 ,20 ] , цель 1e-6

Для третьего промежутка нахождения решения (0 ,30 ] получим следующий возможный результат (рис. 16).

Рисунок 16 — 100 точек, 50 лагов, , цель 1e-6

Результат аппроксимации стал точнее, хоть и имеются редкие исключения (рис. 14).

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

Таблица 3 — Код на Python (Neurolab)

program2.py

"""

Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:18:16) [MSC v.1928 64 bit (AMD64)] on win32

-neurolab version is 0.3.5

-matplotlib version is 3.3.4

-numpy version is 1.19.5

10