Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
136
Добавлен:
30.04.2019
Размер:
498.05 Кб
Скачать

Хусточка А.В. Отчёт по лабораторной работе №2 ПИН-41

В программе nnd2n1 для моделирования простейшего однослойного перцептрона используются следующие функции активации:

Из этих функции имеют производные только:

Блаблабла

Блаблабла

Реализация:

import numpy as np # Реализация функции "И" (англ. "AND") с использованием нейрона Мак-Каллока-Питтса # Задание весов и значения порога print('Введите веса') w1 = int(input('Вес w1 =')) w2 = int(input('Вес w2 =')) print('Введите величину порога') theta = float(input('Порог =')) y = np.array([0, 0, 0, 0]) x1 = np.array([1, 1, 0, 0]) x2 = np.array([1, 0, 1, 0]) z = np.array([1, 0, 0, 0]) con = 1 while con: a = x1*w1 b = x2*w2 zin = a+b for i in range(4): if zin[i] >= theta: y[i] = 1 else: y[i] = 0 print('Значение на выходе нейрона') print(y) if np.array_equal(y, z): con = 0 else: print('Нейрон не обучен. Введите другие значения весовых коэффициентов и порога') w1 = int(input('Вес w1 =')) w2 = int(input('Вес w2 =')) theta = float(input('Порог =')) print('Нейрон МакКаллока-Питса для функции "И" (англ. "AND")') print('Веса нейрона') print(w1) print(w2) print('Пороговое значение') print(theta)

Пример работы программы:

Теоретическая справка:

Реализация:

import numpy as np # Реализация функции "И" (англ. "AND") с использованием нейрона Мак-Каллока-Питтса в биполярной логике # Задание весов и значения порога print('Введите веса') w1 = int(input('Вес w1 =')) w2 = int(input('Вес w2 =')) print('Введите величину порога') theta = float(input('Порог =')) y = np.array([0, 0, 0, 0]) x1 = np.array([1, 1, -1, -1]) x2 = np.array([1, -1, 1, -1]) z = np.array([1, -1, -1, -1]) con = 1 while con:

a = x1*w1

b = x2*w2 zin = a+b for i in range(4): if zin[i] >= theta: y[i] = 1 else: y[i] = -1 print('Значение на выходе нейрона') print(y) if np.array_equal(y, z): con = 0 else: print('Нейрон не обучен. Введите другие значения весовых коэффициентов и порога') w1 = int(input('Вес w1 =')) w2 = int(input('Вес w2 =')) theta = float(input('Порог =')) print('Нейрон МакКаллока-Питса для функции "И" (англ. "AND")') print('Веса нейрона') print(w1) print(w2) print('Пороговое значение') print(theta)

Пример работы программы:

Теоретическая справка:

Реализация:

import numpy as np # Реализация функции "Исключающая ИЛИ" (англ. "XOR") с использованием нейрона Мак-Каллока-Питтса в биполярной логике # Задание весов и значения порога print('Введите веса') w11 = int(input('Вес w11 =')) w12 = int(input('Вес w12 =')) w21 = int(input('Вес w21 =')) w22 = int(input('Вес w22 =')) print('Введите величину порога') theta1 = float(input('Порог t1 =')) theta2 = float(input('Порог t2 =')) print('Введите веса для состояния скрытых нейронов') ws11 = int(input('Вес ws11 =')) ws12 = int(input('Вес ws21 =')) print('Введите величину порога для состояния скрытых нейронов') theta = int(input('Вес theta =')) s1 = np.array([0, 0, 0, 0]) s2 = np.array([0, 0, 0, 0]) h1 = np.array([0, 0, 0, 0]) h2 = np.array([0, 0, 0, 0]) y = np.array([0, 0, 0, 0]) x1 = np.array([1, 1, -1, -1]) x2 = np.array([1, -1, 1, -1]) z = np.array([-1, 1, 1, -1]) con = 1 while con: a = x1*w11*w12 b = x2*w21*w22 s = a + b for i in range(4): if s[i] >= theta1: s1[i] = 1 else: s1[i] = -1 for i in range(4): if s[i] >= theta2: s2[i] = 1 else: s2[i] = -1 print('Значение на выходе нейрона') print('s1: ', s1) print('s2: ', s2) a = s1*ws11*theta b = s2*ws12*theta for i in range(4): if a[i] >= theta1: h1[i] = 1 else: h1[i] = -1 for i in range(4): if b[i] >= theta: h2[i] = 1 else: h2[i] = -1 h = h1 + h2 for i in range(4): if h[i] >= theta: y[i] = 1 else: y[i] = -1 print('y: ', y) if np.array_equal(y, z): con = 0 else: print('Нейрон не обучен. Введите другие значения весовых коэффициентов и порога') print('Введите веса') w11 = int(input('Вес w11 =')) w12 = int(input('Вес w12 =')) w21 = int(input('Вес w21 =')) w22 = int(input('Вес w22 =')) print('Введите величину порога') theta1 = float(input('Порог t1 =')) theta2 = float(input('Порог t2 =')) print('Введите веса для состояния скрытых нейронов') ws11 = int(input('Вес ws11 =')) ws12 = int(input('Вес ws21 =')) print('Введите величину порога для состояния скрытых нейронов') theta = int(input('Вес theta =')) print('Нейрон МакКаллока-Питса для функции "Исключающая ИЛИ" (англ. "XOR")') print('Веса нейрона') print('w11: ', w11) print('w12: ', w12) print('w21: ', w21) print('w22: ', w22) print('Пороговое значение') print('theta1: ', theta1) print('theta2: ', theta2)

Пример работы программы: