November 20, 2012

Fase 3

En esta fase de la red neuronal se le agregaron capas.


from sys import argv
from numpy import *
from numpy.random import *

tasa_de_aprendizaje = 0.03
capa = list()

class neu(object):
    
    def Entrada(self,n):
        entrada = uniform(low=-1, high=1, size=(1,n))
        entrada = append(entrada, -1.0)
        return entrada
    
    def W(self, n):
        return uniform(low=-1, high=1, size=(1,n+1))
        
    
    def Condicion(self, n, w):
        return uniform(low=-1, high=1, size=(1,n+1))
        
    def respuestaDeseada(self, condicion, entrada):
        valorcondi = entrada*condicion
        valorc = valorcondi.sum()
        if (valorc>=0): return 1
        else: return 0
        
    def Act(self, w, entrada):
        a = w*entrada
        act = a.sum()
        return act
    
    def Compara(self, act):
        global capa#=list()
        if(act>=0): 
            capa = append(capa, 1)
            return 1
        else:
            capa = append(capa, 0)
            return 0
        

    def Entrena(self, w, y, respdesea, entrada):
        global tasa_de_aprendizaje
        entrenar = tasa_de_aprendizaje * (respdesea - y) * entrada
        w += entrenar
        return w
    
    def Capa(self):
        global capa
        capa = append(capa, -1)
        return capa

    def __init__(self, n, num, ncapas):
        global capa
        p=0
        w = self.W(n)
        condicion = self.Condicion(n, w)
        print w
        print condicion
        for p in range(num):
            entrada = self.Entrada(n)
            act = self.Act(w, entrada)
            y = self.Compara(act)
            respdesea = self.respuestaDeseada(condicion, entrada)
            entrena = self.Entrena(w, y, respdesea, entrada)
            w = entrena
            for i in range(len(entrada)-1):
                print entrada[i],
            print y, respdesea
        entrada = empty(0)
        act = 0
        y = 0
        respdesea = 0
        entrena = 0
        w = empty(0)
        condicion = empty(0)
        for f in range(ncapas):
            w = self.W(num)
            condicion = self.Condicion(num, w)
            print w
            print condicion
            entrada = self.Capa()
            for h in range(num):
                entrada = self.Entrada(num)
                act = self.Act(w, entrada)
                y = self.Compara(act)
                respdesea = self.respuestaDeseada(condicion, entrada)
                entrena = self.Entrena(w, y, respdesea, entrada)
                w = entrena
                for t in range(len(entrada)-1):
                    print entrada[i],
                print y, respdesea
            print w
            print "Capa",i , ":", capa
            

#se le dan como argumentos el total de entradas (tot), cuantas veces repetirá todo el proceso (num) y el total de capas
n = neu(int(argv[1]), int (argv[2]), int (argv[3]))

No comments:

Post a Comment