1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> from fonctions import sigmoide, tangente
class reseau:
def __init__(self,name='Unknow',learn='sigmoide',error=0.001):
"""
#On initialise avec 3 paramètres : le nom, la fonction d'activation et le code d'erreur d'apprentissage
"""
self.name = name #Le nom du réseau
if 'tangente' == str.lower(learn):
self.fun_learn = tangente
self.name_fun_learn = 'tangente'
else:
self.fun_learn = sigmoide
self.name_fun_learn = 'sigmoide'
self.error = error #Erreur d'apprentissage
self.couche = [] #Tableau de couches avec le nombre de neurones par couches
self.link = [] #Le tableau avec tous les poids
self.values = [] #Le tableau avec les différentes valeurs de neurones
self.control = 0 #Controleur pour empêcher l'ajout de couche/neurone
"""
# L'ensemble des getter et setter pour les variables de l'objet
"""
def set_name(self, name):
self.name = name
def get_name(self):
return self.name
def set_erreur(self, nbr):
if (nbr >0):
self.error = nbr
def get_erreur(self):
return self.error
def set_fun_learn(self, name):
if (str.lower(name) == 'tangente'):
self.fun_learn ) = tangente
self.name_fun_learn = 'tangente'
else:
self.fun_learn = sigmoide
self.name_fun_learn = 'sigmoide'
def get_name_fun_learn(self):
return self.name_fun_learn
def get_data(self):
return [self.get_name(),self.get_name_fun_learn(),self.get_erreur(),self.get_nbr_couche()]
def get_nbr_couche(self):
return len(self.couche)
def get_last_couche(self):
return self.values[-1]
def set_couche(self,value=2):
"""
# On initialise les différentes couches du réseau
# On a au minimum 2 couches entrée+ sortie
"""
if (self.control == 0):
if (value>=2):
for i in range(0,value):
self.coucche.append(0)
else:
print("Il doit y avoir au moins 2 couches")
else:
print("Le réseau est déja créé, vous ne pouvez plus le modifier")
def add_couche(self,pos):
"""
# Fonction pour ajouter une couche
"""
if (self.control == 0):
if (pos>=0 and pos<len(self.couche)):
self.couche.insert(pos,0)
else:
print("Vous pouvez ajouter une couche dans l'intervalle [0,",len(self.couche)"]")
else:
print("Le réseau est déjà créé, vous ne pouvez plus le modifier")
def add_neurone(self,couche,nbr=1):
"""
# Ajouter au minimum un neurone sur la couche déssirée
"""
if (self.control == 0):
if (couche >=0 and couche <=len(self.couche)-1 and nbr>0):
self.couche[couche] += nbr
else:
print("Le réseau est déjà créé, vous ne pouvez plus le modifier")
def add_all_neurone(seld,tab):
"""
# Ajouter tous les neurones a toutes les couches
"""
if (self.control == 0):
if(len(ab) == len(self.couche)):
for i in range[0,len(tab)):
self.add_neurone(i,tab[i])
else:
print("Le tableau doit etre de taille",len(self.couche))
else:
print("Le réseau est déjà créé, vous ne pouvez plus le modifier") |
Partager