0% encontró este documento útil (0 votos)
16 vistas12 páginas

Reconocimiento de Números con Perceptrón

Este documento describe un laboratorio sobre el uso de una red neuronal perceptrón para reconocimiento de caracteres. Explica los objetivos de conocer el perceptrón y realizar reconocimiento usando Matlab. Luego detalla el procedimiento incluyendo identificar los patrones de entrada para números del 0 al 9, definir las salidas binarias, entrenar la red neuronal, y verificar el entrenamiento. Finalmente presenta la implementación en Proteus usando Arduino Mega, incluyendo el código, la simulación y ejemplos de reconocimiento de los números 0 y 3.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas12 páginas

Reconocimiento de Números con Perceptrón

Este documento describe un laboratorio sobre el uso de una red neuronal perceptrón para reconocimiento de caracteres. Explica los objetivos de conocer el perceptrón y realizar reconocimiento usando Matlab. Luego detalla el procedimiento incluyendo identificar los patrones de entrada para números del 0 al 9, definir las salidas binarias, entrenar la red neuronal, y verificar el entrenamiento. Finalmente presenta la implementación en Proteus usando Arduino Mega, incluyendo el código, la simulación y ejemplos de reconocimiento de los números 0 y 3.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Laboratorio 2

CURSO: CONTROL INTELIGENTE


ALUMNO: CHRISTIAN QUISPE CANCHARI
CODIGO: 1223220428
AÑO:

2021
LABORATORIO N°2

I.
                      OBJETIVOS

·         Conocer la manera como se puede usar una red neuronal tipo


Perceptrón para reconocimiento de caracteres.

·         Realizar un reconocimiento usando el Perceptrón del Matlab.

II.            PROCEDIMIENTO
       

Para iniciar con el desarrollo del trabajo, primero identificamos los números del
0-9 dentro de una matriz de 5X3, para así poder obtener el patrón de entradas,
tal como mostramos en las siguientes imágenes: 

3. PROCEDIMIENTO

3.1 Perceptron para realizar un reconocimiento de caracteres en MATLAB

El objetivo es entrenar un Perceptron que pueda identificar los números del 0 al


9 donde cada número se puede definir en una matriz de 5*3, por ejemplo el
número 2 será:

Para resolver el problema, es necesario verificar todos los patrones


correspondientes a cada número, yasignarles el respectivo valor de salida. En
nuestro caso, definiremos por patrón, un vector de entrada de 15 elementos y
un vector de salida de 4 elementos, correspondientes a el número binario
equivalente.

Entonces, primero analicemos los patrones:


Ahora se necesita definir la salida que deseamos genere la red. Para esto se
debe codificar de alguna

manera la información que generará la red en sus neuronas de salida. Una


alternativa consiste en que la salida de la red esta formada por el código binario
del número que se le esta presentando a la entrada. Es decir si a la red le
llegan como entrada los 15 bits correspondientes al número 0 ella genera el
código binario del cero expresado en 4 bits (0 0 0 0), si en cambio le llegan
como entrada los 15 bits correspondientes al número 1 ella genera el código
binario del uno expresado en 4 bits (0 0 0 1) y así con el resto de patrones.
Teniendo en cuenta lo anterior los patrones de entrenamiento para los diez
números corresponderán a la siguiente tabla.

Programa de entrenamiento en Matlab

Entrenamiento de Red Neuronal por Matlab


Resultados de entrenamiento

Obtención de pesos 
Verificación del entrenamiento de Red neuronal

número introducido: 5 

número 5 en binario
A.      IMPLEMENTACIÓN EN PROTEUS UTILIZANDO ARDUINO MEGA

a.       Código de Arduino Mega:

Como se mencionó anteriormente, los resultados de los pesos sinápticos y bias,


serán utilizados para poder crear el código del programa:

// Programa para la simulación para el reconocimiento de números 0-9

int x0=2,x1=3,x2=4,x3=5,x4=6,x5=7,x6=8,x7=9;        // declaramos las entradas

int x8=10,x9=11,x10=12,x11=13,x12=14,x13=15,x14=16;

int y0=23,y1=25,y2=27,y3=29;                    // declaramos las salidas

int p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14; // declaramos las lecturas


de las entradas

float Axon1=0,Axon2=0,Axon3=0,Axon4=0;            // funciones de salidas

void setup() {

pinMode(x0,INPUT); // Entradas

pinMode(x1,INPUT);

pinMode(x2,INPUT);

pinMode(x3,INPUT);

pinMode(x4,INPUT);

pinMode(x5,INPUT);

pinMode(x6,INPUT);

pinMode(x7,INPUT);

pinMode(x8,INPUT);

pinMode(x9,INPUT);

pinMode(x10,INPUT);
pinMode(x11,INPUT);

pinMode(x12,INPUT);

pinMode(x13,INPUT);

pinMode(x14,INPUT);

pinMode(y0,OUTPUT);  // Salidas

pinMode(y1,OUTPUT);

pinMode(y2,OUTPUT);

pinMode(y3,OUTPUT);

void loop() {

p0=digitalRead(x0);  // Lectura de las 15 entradas

p1=digitalRead(x1);

p2=digitalRead(x2);

p3=digitalRead(x3);

p4=digitalRead(x4);

p5=digitalRead(x5);

p6=digitalRead(x6);

p7=digitalRead(x7);

p8=digitalRead(x8);

p9=digitalRead(x9);

p10=digitalRead(x10);

p11=digitalRead(x11);

p12=digitalRead(x12);
p13=digitalRead(x13);

p14=digitalRead(x14);

// Se realiza la sumatoria y de las salida del la nuerona, las que luego será
analizadas para determinar la salida de la red

Axon1=((-6.1908*p0 + 7.3258*p1 -6.8193*p2 + 8.6537*p3 + 0.7947*p4 +


7.7519*p5 - 6.3288*p6 + 12.3908*p7 - 6.2109*p8 + 3.9509*p9 + 0.6312*p10 +
3.6525*p11 - 1.9749*p12 - 1.6296*p13 - 6.8231*p14) - 6.7762);

Axon2=((12.7486*p0 - 9.4536*p1 + 2.2554*p2 - 3.0674*p3 + 0.5774*p4 -


15.7713*p5 - 3.2848*p6 - 2.1839*p7 + 2.8523*p8 - 5.5560*p9 + 0.3551*p10 +
2.6050*p11 - 0.4211*p12 + 0.8416*p13 + 2.9574*p14)+ 2.3736);

Axon3=((2.1202*p0 + 4.3989*p1 + 1.0205*p2 - 17.8365*p3 + 0.4400*p4 -


5.9358*p5 + 0.6421*p6 + 1.3174*p7 + 1.50569*p8 + 5.0600*p9 + 0.9970*p10 -
0.6128*p11 + 2.1841*p12 + 2.7342*p13 + 1.2653*p14) + 1.0875);

Axon4=((-0.4750*p0 + 3.4151*p1 + 0.9237*p2 - 2.0789*p3 + 0.2576*p4 -


1.2327*p5 - 2.5810*p6 - 1.1855*p7 + 0.6357*p8  - 12.1333*p9 + 0.2242*p10 +
1.1422*p11 + 0.7258*p12 + 0.5710*p13 + 0.9646*p14)+ 0.6401);

if(Axon1>=0){

  digitalWrite(y0,HIGH);}

else {

    digitalWrite(y0,LOW);}       

if(Axon2>=0){

  digitalWrite(y1,HIGH);}

 else {

    digitalWrite(y1,LOW);}

if(Axon3>=0){

  digitalWrite(y2,HIGH);}

 else {

    digitalWrite(y2,LOW);}
if(Axon4>=0){

  digitalWrite(y3,HIGH);}

 else {

    digitalWrite(y3,LOW);}

           

B. SIMULACION EN PROTEUS

C. El número cero 
D. EL NÚMERO 3 

También podría gustarte