Advertisement
Gistrec

Какой-то перцептрон

Jan 28th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.80 KB | None | 0 0
  1. ##
  2. # Пример перцептрона с его обучением
  3. ##
  4. import numpy as np
  5.  
  6. # Текущий вес перцептрона
  7. w = np.array([0,0,0])
  8.  
  9. # Примеры и правильные ответы для этих примеров
  10. examples = np.array([[1,1,0.3], [1,0.4, 0.5], [0, 0.7, 0.8]])
  11.  
  12.  
  13. def Target(ex):
  14.     if ex[1] == 1 and ex[2] == 0.3:
  15.         return 1
  16.     elif ex[1] == 0.4 and ex[2] == 0.5:
  17.         return 1
  18.     elif ex[1] == 0.7 and ex[2] == 0.8:
  19.         return 0
  20.  
  21. #
  22. # Функция нужна для предсказания значения
  23. #
  24. def Predict(example):
  25.     sum = example[0]*w[0]+example[1]*w[1]+example[2]*w[2]
  26.     print("Пример ", example)
  27.     print("Сумма ", sum)
  28.     if (sum > 0):
  29.         return 1
  30.     else:
  31.         return 0
  32. #
  33. # Алгоритм обучения
  34. #
  35. perfect = False
  36. while not perfect:
  37.     perfect = True
  38.     for e in examples:
  39.         # Для всех примеров, которые мы составили для тренировки
  40.         # Если предсказанное значение для этого примера не равно
  41.         # целевому значению этого примера, то нейрон что-то классифицировал
  42.         # не идеально
  43.         if Predict(e) != Target(e):
  44.             perfect = False
  45.             # В первом случае:
  46.             # Если мы предсказали 0 и ошиблись,
  47.             # то значит правильным ответом должна быть единица
  48.             # т.е. мы должны прибавить к нашим весам значение нашего примера
  49.             if Predict(e) == 0:
  50.                 w = w + e
  51.             # В другом случае тоже самое, но наоборот
  52.             else:
  53.                 w = w - e
  54.             print("Новык веса ", w)
  55.  
  56. print("Финальные веса ", w)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement