Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def sum_weight(j, list_digital, list_weight, pomehi):
- sum = 0
- for j in range(9):
- sum += list_digital[j] * list_weight[j]
- for j in range(pomehi):
- sum += random.choice(list_digital) * random.choice(list_weight)
- return sum
- def nakazanie(list, list_digital): #функция для "наказания" - уменьшения определенных элементов списка "вес" на 1
- j = 0
- # print(list, "- до наказания")
- for j in range(9):
- if list_digital[j] == 1:
- list[j] -= 1
- return list
- def pooshchreniye(list, list_digital): #функция для "поощерения" - увелечения определенных элементов списка "вес" на 1
- j = 0
- # print(list, "- до поощерения")
- for j in range(9):
- if list_digital[j] == 1:
- list[j] += 1
- return list
- def proverka(sum, R_const, current_number, number):
- if current_number == number:
- if sum < R_const:
- return 1
- else:
- return 0
- else:
- if sum >= R_const:
- return 2
- else:
- return 0
- def print_1(sum, R_const, n, i):
- print("SUM",sum, "<",R_const, "- поощеряем(цифра -", n,",номер -", i+1, "в последовательности)")
- return 0
- def print_2(sum, R_const, n, i):
- print("SUM", sum, ">=",R_const, "- наказываем(цифра -", n,",номер -", i+1, "в последовательности)")
- return 0
- d0=[1,1,0,1,0,1,0,1,1] #признак цифры 0
- d1=[0,0,1,1,0,0,0,1,0] #признак цифры 1
- d2=[0,1,0,1,0,0,1,0,1] #признак цифры 2
- d3=[0,1,1,0,1,0,1,0,0] #признак цифры 3
- d4=[1,0,0,1,1,0,0,1,0] #признак цифры 4
- d5=[1,1,0,0,1,0,0,1,1] #признак цифры 5
- d6=[0,0,1,0,1,1,0,1,1] #признак цифры 6
- d7=[0,1,1,0,0,1,0,0,0] #признак цифры 7
- d8=[1,1,0,1,1,1,0,1,1] #признак цифры 8
- d9=[1,1,0,1,1,0,1,0,0] #признак цифры 9
- weight = [7,4,3,5,6,1,3,2,9]
- weight_old = [7,4,3,5,6,1,3,2,9]
- num_posl = [6, 4, 3, 0, 5, 2, 9, 2, 4, 2, 3, 2, 3, 8, 4, 9, 4, 9, 8, 2, 6, 2, 0, 9, 6, 6, 9, 4, 2, 9, 7, 5, 7, 2, 4, 5, 9, 8, 5, 2, 2, 8, 8, 7, 3, 8, 1, 3, 6, 7, 4, 2, 2, 0, 4, 9, 0, 4, 9, 6, 7, 8, 4, 5, 9, 9, 6, 6, 9, 0, 9, 1, 9, 4, 7, 3, 0, 2, 8, 8, 8, 2, 3, 1, 5, 8, 0, 5, 9, 1, 9, 4, 6, 5, 8, 6, 0, 5, 4, 7, 9, 6, 9, 4, 1, 6, 1, 6, 4, 0, 4, 7, 8, 6, 1, 9, 2, 8, 6, 4, 7, 9, 5, 4, 2, 5, 9, 5, 5, 4, 2, 2, 3, 5, 7, 0, 4, 4, 1, 3, 1, 1, 6, 2, 3, 0, 7, 9, 3, 6, 1, 6, 6, 6, 6, 8, 8, 6, 1, 1, 9, 8, 1, 1, 3, 5, 2, 4, 1, 6, 5, 0, 5, 5, 0, 8, 3, 1, 2, 8, 3, 5, 6, 0, 5, 7, 4, 6, 9, 3, 8, 1, 8, 0, 9, 3, 3, 0, 0, 7, 1, 3, 3, 7, 8, 1, 3, 3, 3, 7, 3, 8, 0, 5, 6, 6, 5, 0, 8, 9, 1, 6, 7, 0, 5, 7, 0, 6, 0, 9, 8, 1, 4, 5, 2, 6, 8, 5, 7, 3, 5, 9, 3, 1, 8, 1, 9, 1, 9, 2, 7, 9, 2, 1, 3, 7, 8, 4, 7, 8, 1, 2, 3, 4, 8, 4, 3, 7, 9, 9, 5, 5, 6, 9, 0, 3, 0, 3, 0, 6, 0, 0, 9, 2, 1, 8, 7, 6, 7, 1, 1, 2, 2, 0, 1, 3, 2, 2, 3, 8, 1, 6, 2, 1, 6, 2, 4, 3, 5, 4, 5, 5, 5, 0, 1, 9, 2, 8, 8, 5, 4, 7, 9, 5, 8, 0, 3, 5, 5, 0, 5, 6, 3, 4, 6, 7, 2, 3, 2, 2, 6, 9, 5, 0, 7, 9, 4, 5, 7, 3, 3, 7, 7, 8, 4, 1, 3, 8, 7, 0, 9, 2, 1, 7, 4, 0, 2, 3, 5, 4, 5, 9, 6, 7, 8, 6, 9, 1, 0, 3, 6, 8, 8, 2, 2, 5, 7, 4, 6, 2, 7, 4, 1, 7, 3, 1, 3, 4, 9, 4, 3, 9, 8, 0, 5, 4, 4, 9, 4, 9, 6, 5, 3, 4, 6, 1, 4, 7, 0, 8, 7, 8, 3, 2, 0, 5, 9, 7, 6, 0, 4, 2, 1, 0, 2, 9, 1, 0, 4, 8, 5, 1, 0, 3, 9, 1, 1, 5, 0, 7, 8, 2, 0, 7, 6, 7, 5, 0, 7, 1, 6, 0, 1, 8, 7, 4, 2, 1, 5, 0, 4, 9, 1, 7, 5, 8, 7, 8, 3, 3, 0, 6, 6, 7, 7, 4, 7, 8, 2, 0, 3, 2, 1, 6, 0, 4, 2, 8, 7, 2]
- i = 0
- R_const = 27
- print("Введите количество помех для персептрона")
- pomehi = int(input())
- print("Введите цифру, под которую будете обучать персептрон")
- number = int(input())
- for i in range(len(num_posl)):
- if num_posl[i] == 0: #определяем 0
- sum = sum_weight(0, d0, weight, pomehi)
- res = proverka(sum, R_const, 0, number)
- if res == 1:
- weight = pooshchreniye(weight, d0)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d0)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 1: #определяем 1
- sum = sum_weight(0, d1, weight, pomehi)
- res = proverka(sum, R_const, 1, number)
- if res == 1:
- weight = pooshchreniye(weight, d1)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d1)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 2: #определяем 2
- sum = sum_weight(0, d2, weight, pomehi)
- res = proverka(sum, R_const, 2, number)
- if res == 1:
- weight = pooshchreniye(weight, d2)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d2)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 3: #определяем 3
- sum = sum_weight(0, d3, weight, pomehi)
- res = proverka(sum, R_const, 3, number)
- if res == 1:
- weight = pooshchreniye(weight, d3)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d3)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 4: #определяем 4
- sum = sum_weight(0, d4, weight, pomehi)
- res = proverka(sum, R_const, 4, number)
- if res == 1:
- weight = pooshchreniye(weight, d4)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d4)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 5: #определяем 5
- sum = sum_weight(0, d5, weight, pomehi)
- res = proverka(sum, R_const, 5, number)
- if res == 1:
- weight = pooshchreniye(weight, d5)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d5)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 6: #определяем 6
- sum = sum_weight(0, d6, weight, pomehi)
- res = proverka(sum, R_const, 6, number)
- if res == 1:
- weight = pooshchreniye(weight, d6)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d6)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 7: #определяем 7
- sum = sum_weight(0, d7, weight, pomehi)
- res = proverka(sum, R_const, 7, number)
- if res == 1:
- weight = pooshchreniye(weight, d7)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d7)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 8: #определяем 8
- sum = sum_weight(0, d8, weight, pomehi)
- res = proverka(sum, R_const, 8, number)
- if res == 1:
- weight = pooshchreniye(weight, d8)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d8)
- print_2(sum, R_const, num_posl[i], i)
- elif num_posl[i] == 9: #определяем 9
- sum = sum_weight(0, d9, weight, pomehi)
- res = proverka(sum, R_const, 9, number)
- if res == 1:
- weight = pooshchreniye(weight, d9)
- print_1(sum,R_const, num_posl[i], i)
- elif res == 2:
- weight = nakazanie(weight, d9)
- print_2(sum, R_const, num_posl[i], i)
- #print(sum, " - сумма после", i, "итераций, когда на вход персептрона пришла", num_posl[i])
- #print("Вес после", i, " итерации - ", weight)
- print('\n',weight_old, "Начальный вес\n", weight, " - Итоговый вес после 500 итераций")
Advertisement
Add Comment
Please, Sign In to add comment