from sys import argv from numpy import * from numpy.random import * class neu(object): def Entrada(self,n):#crea las entradas entrada = uniform(low=-1, high=1, size=(1,n))#el size sirve para que sea vector de solo 1 dimension y la n cuantos valores tendra entrada = append(entrada, -1.0)#se le agrega el valor de menos 1 para evitar agregar valor umbral #print "ENTRADA:", entrada return entrada def W(self, n):#Creacion de pesos w = uniform(low=-1, high=1, size=(1,n+1))#low rango minimo y high maximo lo que hace es darme valores entre -1 y 1 #print "PESOS:", w return w def Act(self, w, entrada):#multiplica y suma los vectores de peso y entrada a = w*entrada#multiplica vectores #print a act = a.sum()#suma el vector ya multiplicado #print "SUMATORIA PARA ACTIVACION:", act return act def Compara(self, act):#compara el valor de activacion si es 0 es verdadero si no es falso if(act>=0): y = 1 #print True #print y else: y = 0 #print False #print y return y def __init__(self, n, num): p=0 w = self.W(n) #primero se crean los pesos aleatoriamente for p in range(num):#hace las iteraciones entrada = self.Entrada(n)#crea entradas act = self.Act(w, entrada)#hace las operaciones para obtener la activacion y = self.Compara(act)#compara para obtener el valor de salida print entrada[0],entrada[1], y#imprime dos valores del vector y la salida n = neu(int(argv[1]), int (argv[2])) #toma los dos valores importantes que son n el numero de valores dentro del #vector y num que son el numero de veces que quiero que de un vector de #de entradas nuevo haga todo el proceso
Luego para poder ponerlo en un plano se guarda la impresión en un archivo .dat desde la terminal usas los siguientes comandos que sirven para que se separen las salidas 0 y las salidas 1 en archivos diferentes usando grep
Paso 1:
python neu.py 2 100 > datos.datPaso 2:
grep "\0$" datos.dat > ceros.datPaso 3:
grep "1$" datos.dat > unos.datLuego entras a gnuplot desde terminal y haces lo siguiente
Paso 1 creas un plano:
gnuplot> set key offPaso 2 le das el tamaño a los tus puntos:
gnuplot> set pointsize 3Paso 3 creas el plano con los valor de los archivos antes separados 0 y 1:
gnuplot> plot 'ceros.dat' u 1:2 w points pt 5 lt 1, 'unos.dat' u 1:2 w point pt 7 lt 3
No hay comentarios:
Publicar un comentario