Файл: Отчет по лабораторной работе 5 по дисциплине Основы искусственного интеллекта.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 134

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.



Министерство науки и высшего образования Российской ФедерацииФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»Факультет математики и информационных технологийКафедра программного обеспечения вычислительной техники и автоматизированных системОТЧЕТпо лабораторной работе №5по дисциплине «Основы искусственного интеллекта»Алгоритм обучения персептрона

Руководитель

А.М. Семенов

«»2023 г.
Студент группы 20ПИнж(б)РПИС

В.В. Машков

«»2023 г.
Оренбург 20221 Цель работыЦель работы:Изучить алгоритм обучения персептрона.Задачи работы:Написать программу моделирующую алгоритм обучения персептрона.2 Ход работыДанные для обучения персептрона представлены в таблице 1Таблица 1 – Набор данных для обучения

Х1

Х2

Х3

выход

2,2

3,1

1,0

1

6,5

3,2

1,0

-1

8,4

4,9

1,0

-1

9,7

6,3

1,0

-1

1,5

6,8

1,0

1

3,1

4,4

1,0

1

5,4

2,2

1,0

-1

6,3

4,4

1,0

1

1,5

6,1

1,0

-1

8,1

2,1

1,0

-1

4,5

3,7

1,0

1

2,1

3,1

1,0

1

6,5

3,4

1,0

-1

4,5

8,3

1,0

1

2,3

2,1

1,0

1

4,4

2,3

1,0

-1

3,0

0,3

1,0

-1

8,1

3,2

1,0

1

4,8

4,2

1,0

1

4,6

2,6

1,0

-1

В качестве функции активации использовалась линейная функция. График функции представлен на рисунке 1.В процессе обучения нейросети на основе набора данных (таблица 1) и были получены следующие данные (рисунок 2):Рисунок 2 – результат обученияНа рисунке 3 графически представлена программа классификации. Если выходное значение равно -1, значит точка лежит выше линии, при 1 лежит ниже.Рисунок 3 – Классификация точке3 ВыводВ процессе выполнения лабораторной работы был изучен и реализован на языке python с помощью библиотеки numpy алгоритм обучения персептрона.В результате было получено графическое разбиение входных точек на два класса. На основе полученных данных, заключаем что персептрон правильно классифицирует входные данные.Приложение АКод программыimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapcmap_light = ListedColormap(['#FF0000','#00FF00','#0000FF'])X=np.array([[2.0,3.0,1.0],[6.3,3.2,1.0], [8.4,4.9,1.0],[9.7,6.3,1.0],[1.5,4.8,1.0],[3.2,4.4,1.0],[5.4,2.2,1.0],[6.3,5.5,1.0],[8.5,6.1,1.0],[9.2,2.9,1.0],[4.5,8.7,1.0],[3.7,6.2,1.0],[6.5,3.7,1.0],[4.9,8.4,1.0],[2.3,6.2,1.0],[4.4,2.1,1.0],[6.2,0.7,1.0],[8.1,3.2,1.0],[3.9,4.2,1.0],[4.7,6.6,1.0]])Y=np.array([[1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1]]).Tsyn0=2*np.random.random((3,4))-1syn1=2*np.random.random((4,1))-1for j in range(60000):l1 = 1/(1+np.exp(-(np.dot(X,syn0))))l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))l2_d = (Y-l2)*(l2*(1-l2))l1_d = l2_d.dot(syn1.T)*(l1*(1-l1))syn1 += l1.T.dot(l2_d)syn0 += X.T.dot(l1_d)print("Выходные данные")print(l2)plt.scatter(X[:,0],X[:,1],c=Y)plt.plot([0,10],[0,10],c='b')plt.xlim((0,10))plt.ylim((0,10))plt.grid(True)plt.show()