Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Sun Oct 4 14:25:03 2020
- @author: admin
- """
- import copy, numpy as np
- #nasa funkcia signum
- def signum(number):
- if number >= 0:
- return 1
- else:
- return 0
- #zadefinovanie architektury neuromatu
- n = 5 #pocet neuronov
- typy = [1,1,1,0,0] #typy danych neuronov
- #matica susednosti
- hrany = [[0,0,0,0,0,0,1,0],
- [0,0,1,0,0,0,0,0],
- [0,1,0,1,0,0,1,0],
- [0,0,0,0,1,0,0,0],
- [0,0,0,1,0,0,1,0],
- [1,1,1,1,1,0,0,0],
- [0,0,0,0,0,0,0,0],
- [1,1,0,1,0,0,1,0]]
- vstupny = n #index vstupneho neuronu
- vystupny = n + 1 #index vystupneho neuronu
- startovaci = n + 2 #index startovacieho neuronu
- #pociatocne stavy neuronov - 1 aktivny, 0 neaktivny
- #na zaciatok je aktivny len startovaci
- pocStavy = [0,0,0,0,0,0,0,1]
- #vypocet d(i) - pocty vstupov do neuronu i
- d = [0 for i in range(n+3)]; #inicializovanie nuloveho vektora velkosti n+3
- for i in range(len(d)):
- for j in range(len(hrany)):
- d[i] += hrany[j][i]
- print('d(i) - pocty vstupov do neuronu i')
- print(d)
- #priradenie prahov
- prahy = [0 for i in range(n+3)] #inicializovanie nuloveho vektora velkosti n+3
- for i in range(len(typy)):
- if typy[i] == 1:
- prahy[i] = d[i] + 1
- else:
- prahy[i] = 1
- prahy[vystupny] = 1
- prahy[startovaci] = 1
- print('\nprahy:')
- print(prahy)
- #priradenie vah
- vahy = copy.deepcopy(hrany); #vytvorenie kopie matice susednosti
- for i in range(len(typy)):
- if typy[i] == 1:
- vahy[vstupny][i] = d[i]
- else:
- vahy[vstupny][i] = - d[i]
- print('\nvahy:')
- print(np.matrix(vahy)) #vypisanie matice pomocou kniznice numpy
- #vypocet
- def vypocet(vstup):
- stavy = [pocStavy] #v premennej stavy ukladame stavy pocas celeho vypoctu
- retazec = vstup + '0' #pridanie e3te jedneho znaku za
- #vstup pre ziskanie vysledku po spracovani povodneho vstupu
- for h in range(len(retazec)):
- stavy.append([0 for i in range(len(pocStavy))])
- stavy[h][vstupny] = int(retazec[h])
- for i in range(len(stavy[h])):
- ciastocVypocet = 0
- for j in range(len(vahy)):
- ciastocVypocet += stavy[h][j]*vahy[j][i]
- ciastocVypocet -= prahy[i]
- stavy[h+1][i] = signum(ciastocVypocet)
- print('\nvypocet na vstupe ' + vstup + ':')
- print(np.matrix(stavy))
- return stavy[len(retazec)][vystupny]
- #volanie funkcie vypocet na zvolenom vstupe a vypisanie vysledku
- print('\nvysledok:' + ' ' + str(vypocet('111')))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement