Keksike

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

Mar 24th, 2022 (edited)
1,054
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.54 KB | None | 0 0
  1. import random
  2.  
  3. def big_boys(num, sign, weight):
  4.   totals = []
  5.   sign_num = sign.get(num)
  6.   for j in range(10):
  7.     weight_row = weight.get(j)
  8.     total = 0
  9.     for k in range(9):
  10.       total += sign_num[k] * weight_row[k]
  11.     totals.append(total)
  12.   return totals
  13.  
  14. def tribunal(num ,total_sum_weight, num1, num2, num3):
  15.   def karcer(num_tec, sign, weight):
  16. #  print(list, "- до поощерения")
  17.     j = 0
  18.     attribute_of_num = sign.get(num_tec)
  19.     weight_new = weight.get(num_tec)
  20.     for j in range(9):
  21.       if attribute_of_num[j] == 1:
  22.         weight_new[j] -= 1
  23. #    print(weight.get(num_tec), "Вес после наказания")
  24.     return
  25.  
  26.   def premia(num_tec, sign, weight):
  27. #  print(list, "- до поощерения")
  28.     j = 0
  29.     attribute_of_num = sign.get(num_tec)
  30.     weight_new = weight.get(num_tec)
  31.     for j in range(9):
  32.       if attribute_of_num[j] == 1:
  33.         weight_new[j] += 1
  34. #    print(weight.get(num_tec), "Вес после поощерения")
  35.     return
  36.    
  37. #  print(total_sum_weight)
  38.   max_sum = max(total_sum_weight)
  39.   for i in range(10):
  40.     if total_sum_weight[i] == max_sum:
  41.       if (i == num1 or i == num2 or i == num3) and total_sum_weight[i] <= max_sum:
  42. #        print(i, "Выбранная цифра", weight.get(i), " - поощеряем")
  43.         premia(i, sign, weight)
  44.       elif (i != num1 or i != num2 or i != num3) and total_sum_weight[i] == max_sum:
  45.         karcer(i, sign, weight)
  46. #        print(i, "Плохая цифра", weight.get(i), " - наказываем")
  47.   return("Я все сделал")
  48.  
  49. weight = {0:[5,1,3,4,2,8,9,5,3], #признак цифры 0
  50.           1:[3,2,2,7,9,5,4,9,6], #признак цифры 1
  51.           2:[3,5,6,3,2,2,5,6,8], #признак цифры 2
  52.           3:[5,7,8,0,4,6,7,9,3], #признак цифры 3
  53.           4:[7,4,1,5,0,4,8,5,4], #признак цифры 4
  54.           5:[2,2,9,9,5,3,2,3,5], #признак цифры 5
  55.           6:[0,9,6,4,2,8,4,6,7], #признак цифры 6
  56.           7:[5,7,8,1,3,5,6,6,9], #признак цифры 7
  57.           8:[3,6,1,8,6,5,1,3,2], #признак цифры 8
  58.           9:[5,2,5,4,1,3,1,2,3]} #признак цифры 9
  59.  
  60. weight_old = {0:[5,1,3,4,2,8,9,5,3], #признак цифры 0
  61.               1:[3,2,2,7,9,5,4,9,6], #признак цифры 1
  62.               2:[3,5,6,3,2,2,5,6,8], #признак цифры 2
  63.               3:[5,7,8,0,4,6,7,9,3], #признак цифры 3
  64.               4:[7,4,1,5,0,4,8,5,4], #признак цифры 4
  65.               5:[2,2,9,9,5,3,2,3,5], #признак цифры 5
  66.               6:[0,9,6,4,2,8,4,6,7], #признак цифры 6
  67.               7:[5,7,8,1,3,5,6,6,9], #признак цифры 7
  68.               8:[3,6,1,8,6,5,1,3,2], #признак цифры 8
  69.               9:[5,2,5,4,1,3,1,2,3]} #признак цифры 9
  70.  
  71. sign = {0:[1,1,0,1,0,1,0,1,1], #признак цифры 0
  72.         1:[0,0,1,1,0,0,0,1,0], #признак цифры 1
  73.         2:[0,1,0,1,0,0,1,0,1], #признак цифры 2
  74.         3:[0,1,1,0,1,0,1,0,0], #признак цифры 3
  75.         4:[1,0,0,1,1,0,0,1,0], #признак цифры 4
  76.         5:[1,1,0,0,1,0,0,1,1], #признак цифры 5
  77.         6:[0,0,1,0,1,1,0,1,1], #признак цифры 6
  78.         7:[0,1,1,0,0,1,0,0,0], #признак цифры 7
  79.         8:[1,1,0,1,1,1,0,1,1], #признак цифры 8
  80.         9:[1,1,0,1,1,0,1,0,0]} #признак цифры 9
  81.  
  82. l0 = [0 for i in range(0,10)]
  83. l1 = [1 for i in range(0,10)]
  84. l2 = [2 for i in range(0,10)]
  85. l3 = [3 for i in range(0,10)]
  86. l4 = [4 for i in range(0,10)]
  87. l5 = [5 for i in range(0,10)]
  88. l6 = [6 for i in range(0,10)]
  89. l7 = [7 for i in range(0,10)]
  90. l8 = [8 for i in range(0,10)]
  91. l9 = [9 for i in range(0,10)]
  92.  
  93. num_posl = l0+l1+l2+l3+l4+l5+l6+l7+l8+l9
  94. random.shuffle(num_posl)
  95.  
  96. print("Введите 3 цифры, под которые будете обучать персептрон")
  97. number1 = int(input())
  98. number2 = int(input())
  99. number3 = int(input())
  100.  
  101. for i in range(len(num_posl)):
  102.   print("Номер итерации", i)
  103.   total_weight = big_boys(num_posl[i], sign, weight)
  104.   tribunal(num_posl, total_weight, number1, number2, number3)
  105.  
  106.   #print(sum, " - сумма после", i, "итераций, когда на вход персептрона пришла", num_posl[i])
  107.   #print("Вес после", i, " итерации - ", weight)
  108.  
  109. print('\n',weight_old, "Начальный вес\n", weight, " - Итоговый вес после 100 итераций")
Advertisement
Add Comment
Please, Sign In to add comment