Keksike

1 лаба нейроинформатика

Mar 9th, 2022 (edited)
818
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.41 KB | None | 0 0
  1. def sum_weight(j, list_digital, list_weight):
  2.   sum = 0
  3.   for j in range(15):
  4.     sum += list_digital[j] * list_weight[j]
  5.   return sum
  6.  
  7. def nakazanie(list, list_digital): #функция для "наказания" - уменьшения определенных элементов списка "вес" на 1
  8.   j = 0
  9.   print(list, "- до наказания")
  10.   for j in range(15):
  11.     if list_digital[j] == 1:
  12.       list[j] -= 1
  13.   return list
  14.  
  15. def pooshchreniye(list, list_digital): #функция для "поощерения" - увелечения определенных элементов списка "вес" на 1
  16.   j = 0
  17.   print(list, "- до поощерения")
  18.   for j in range(15):
  19.     if list_digital[j] == 1:
  20.       list[j] += 1
  21.   return list
  22.  
  23. def proverka(sum, R_const, current_number, number):
  24.   if current_number == number:
  25.     if sum < R_const:
  26.       return 1
  27.     else:
  28.       return 0
  29.   else:
  30.     if sum >= R_const:
  31.       return 2
  32.     else:
  33.       return 0
  34.  
  35. def print_1(sum, R_const, n, i):
  36.   print("Сумма",sum, "<",R_const, "- поощеряем(цифра -", n,",номер -", i+1, "в последовательности)")
  37.   print(weight, "- после поощерения\n")
  38.   return 0
  39.  
  40. def print_2(sum, R_const, n, i):
  41.   print("Сумма", sum, ">=",R_const, "- наказываем(цифра -", n,",номер -", i+1, "в последовательности)")
  42.   print(weight, "- после наказания\n")
  43.   return 0
  44.  
  45. d0=[1,1,1,1,0,1,1,0,1,1,0,1,1,1,1] #признак цифры 0
  46. d1=[0,0,1,0,1,1,1,0,1,0,0,1,0,0,1] #признак цифры 1
  47. d2=[1,1,1,0,0,1,1,1,1,1,0,0,1,1,1] #признак цифры 2
  48. d3=[1,1,1,0,0,1,1,1,1,0,0,1,1,1,1] #признак цифры 3
  49. d4=[1,0,1,1,0,1,1,1,1,0,0,1,0,0,1] #признак цифры 4
  50. d5=[1,1,1,1,0,0,1,1,1,0,0,1,1,1,1] #признак цифры 5
  51. d6=[1,1,1,1,0,0,1,1,1,1,0,1,1,1,1] #признак цифры 6
  52. d7=[1,1,1,0,0,1,0,0,1,0,0,1,0,0,1] #признак цифры 7
  53. d8=[1,1,1,1,0,1,0,1,0,1,0,1,1,1,1] #признак цифры 8
  54. d9=[1,1,1,1,0,1,1,1,1,0,0,1,0,0,1] #признак цифры 9
  55.  
  56. weight = [7,4,3,5,6,1,3,2,9,5,4,2,8,6,3]
  57.  
  58. num_posl=[9,6,3,9,9,4,1,0,2,6,3,7,5,6,8,3,8,5,4,5,5,3,3,7,8,1,4,1,5,2,3,9,1,8,2,2,0,0,1,6,6,7,1,4,9,1,9,0,3,8,8,0,0,7,5,5,4,2,9,8,4,8,9,1,5,0,5,4,2,6,9,1,4,3,0,1,7,7,6,0,5,7,7,3,2,6,3,6,4,8,2,7,0,2,4,7,2,6,8,9]
  59.  
  60. i = 0
  61. R_const = 27
  62.  
  63. print("Введите цифру, под которую будете обучать персептрон")
  64.  
  65. while i == 0:
  66.   number = int(input())
  67.   if 0 <= number <= 9:
  68.     i = 1
  69.   else:
  70.     i = 0
  71.     print("Неверно введенна цифра. Введите цифру от 0 до 9")
  72.  
  73. for i in range(len(num_posl)):
  74.   if num_posl[i] == 0: #определяем 0
  75.     sum = sum_weight(0, d0, weight)
  76.     res = proverka(sum, R_const, 0, number)
  77.     if res == 1:
  78.       weight = pooshchreniye(weight, d0)
  79.       print_1(sum,R_const, num_posl[i], i+1)
  80.     elif res == 2:
  81.       weight = nakazanie(weight, d0)
  82.       print_2(sum, R_const, num_posl[i], i)
  83.      
  84.   elif num_posl[i] == 1: #определяем 1
  85.     sum = sum_weight(0, d1, weight)
  86.     res = proverka(sum, R_const, 1, number)
  87.     if res == 1:
  88.       weight = pooshchreniye(weight, d1)
  89.       print_1(sum,R_const, num_posl[i], i+1)
  90.     elif res == 2:
  91.       weight = nakazanie(weight, d1)
  92.       print_2(sum, R_const, num_posl[i], i)
  93.      
  94.   elif num_posl[i] == 2: #определяем 2
  95.     sum = sum_weight(0, d2, weight)
  96.     res = proverka(sum, R_const, 2, number)
  97.     if res == 1:
  98.       weight = pooshchreniye(weight, d2)
  99.       print_1(sum,R_const, num_posl[i], i+1)
  100.     elif res == 2:
  101.       weight = nakazanie(weight, d2)
  102.       print_2(sum, R_const, num_posl[i], i)
  103.      
  104.   elif num_posl[i] == 3: #определяем 3
  105.     sum = sum_weight(0, d3, weight)
  106.     res = proverka(sum, R_const, 3, number)
  107.     if res == 1:
  108.       weight = pooshchreniye(weight, d3)
  109.       print_1(sum,R_const, num_posl[i], i+1)
  110.     elif res == 2:
  111.       weight = nakazanie(weight, d3)
  112.       print_2(sum, R_const, num_posl[i], i)
  113.      
  114.   elif num_posl[i] == 4: #определяем 4
  115.     sum = sum_weight(0, d4, weight)
  116.     res = proverka(sum, R_const, 4, number)
  117.     if res == 1:
  118.       weight = pooshchreniye(weight, d4)
  119.       print_1(sum,R_const, num_posl[i], i+1)
  120.     elif res == 2:
  121.       weight = nakazanie(weight, d4)
  122.       print_2(sum, R_const, num_posl[i], i)
  123.      
  124.   elif num_posl[i] == 5: #определяем 5
  125.     sum = sum_weight(0, d5, weight)
  126.     res = proverka(sum, R_const, 5, number)
  127.     if res == 1:
  128.       weight = pooshchreniye(weight, d5)
  129.       print_1(sum,R_const, num_posl[i], i+1)
  130.     elif res == 2:
  131.       weight = nakazanie(weight, d5)
  132.       print_2(sum, R_const, num_posl[i], i)
  133.      
  134.   elif num_posl[i] == 6: #определяем 6
  135.     sum = sum_weight(0, d6, weight)
  136.     res = proverka(sum, R_const, 6, number)
  137.     if res == 1:
  138.       weight = pooshchreniye(weight, d6)
  139.       print_1(sum,R_const, num_posl[i], i+1)
  140.     elif res == 2:
  141.       weight = nakazanie(weight, d6)
  142.       print_2(sum, R_const, num_posl[i], i)
  143.      
  144.   elif num_posl[i] == 7: #определяем 7
  145.     sum = sum_weight(0, d7, weight)
  146.     res = proverka(sum, R_const, 7, number)
  147.     if res == 1:
  148.       weight = pooshchreniye(weight, d7)
  149.       print_1(sum,R_const, num_posl[i], i+1)
  150.     elif res == 2:
  151.       weight = nakazanie(weight, d7)
  152.       print_2(sum, R_const, num_posl[i], i)
  153.      
  154.   elif num_posl[i] == 8: #определяем 8
  155.     sum = sum_weight(0, d8, weight)
  156.     res = proverka(sum, R_const, 8, number)
  157.     if res == 1:
  158.       weight = pooshchreniye(weight, d8)
  159.       print_1(sum,R_const, num_posl[i], i+1)
  160.     elif res == 2:
  161.       weight = nakazanie(weight, d8)
  162.       print_2(sum, R_const, num_posl[i], i)
  163.      
  164.   elif num_posl[i] == 9: #определяем 9
  165.     sum = sum_weight(0, d9, weight)
  166.     res = proverka(sum, R_const, 9, number)
  167.     if res == 1:
  168.       weight = pooshchreniye(weight, d9)
  169.       print_1(sum,R_const, num_posl[i], i+1)
  170.     elif res == 2:
  171.       weight = nakazanie(weight, d9)
  172.       print_2(sum, R_const, num_posl[i], i)
  173.  
  174.   #print(sum, " - сумма после", i, "итераций, когда на вход персептрона пришла", num_posl[i])
  175.   #print("Вес после", i, " итерации - ", weight)
  176.  
  177. print(weight, " - Итоговый вес после 100 итераций")
Add Comment
Please, Sign In to add comment