##
# Пример перцептрона с его обучением
##
import numpy as np
# Текущий вес перцептрона
w = np.array([0,0,0])
# Примеры и правильные ответы для этих примеров
examples = np.array([[1,1,0.3], [1,0.4, 0.5], [0, 0.7, 0.8]])
def Target(ex):
if ex[1] == 1 and ex[2] == 0.3:
return 1
elif ex[1] == 0.4 and ex[2] == 0.5:
return 1
elif ex[1] == 0.7 and ex[2] == 0.8:
return 0
#
# Функция нужна для предсказания значения
#
def Predict(example):
sum = example[0]*w[0]+example[1]*w[1]+example[2]*w[2]
print("Пример ", example)
print("Сумма ", sum)
if (sum > 0):
return 1
else:
return 0
#
# Алгоритм обучения
#
perfect = False
while not perfect:
perfect = True
for e in examples:
# Для всех примеров, которые мы составили для тренировки
# Если предсказанное значение для этого примера не равно
# целевому значению этого примера, то нейрон что-то классифицировал
# не идеально
if Predict(e) != Target(e):
perfect = False
# В первом случае:
# Если мы предсказали 0 и ошиблись,
# то значит правильным ответом должна быть единица
# т.е. мы должны прибавить к нашим весам значение нашего примера
if Predict(e) == 0:
w = w + e
# В другом случае тоже самое, но наоборот
else:
w = w - e
print("Новык веса ", w)
print("Финальные веса ", w)
Comments
0 B
|👍
/👎