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