Ir al contenido principal

RNA

Transparencias de la clase

Ejercicio de entrenamiento de perceptron:
Pedro Ponce Cruz. Inteligencia Artificial con aplicaciones a la Ingeniería

Comandos Básicos para RNA en Matlab


PERCEPTRÓN
%perceptrón para compuerta or

entrada = [0 0 1 1; 0 1 0 1];
objetivo = [0 1 1 1];
net= perceptron;
net = train(net,entrada,objetivo);
view(net)
salida = net(entrada)

pesos=net.IW{1,1}
bias=net.b{1,1}
salida =

     0     1     1     1


pesos =

     1     1


bias =

    -1


%perceptrón para compuerta and

entrada = [0 0 1 1; 0 1 0 1];
objetivo = [0 0 0 1];
net= perceptron;
net = train(net,entrada,objetivo);
view(net)
salida = net(entrada)

pesos=net.IW{1,1}
bias=net.b{1,1}
salida =

     0     0     0     1


pesos =

     2     1


bias =

    -3


A continuación se presenta el código en Matlab para entrenamiento de RNA para identificación de las vocales:


clc; clear all
format long
%cada letra ha sido formada de 5x5


p1=[1;1;1;1;1;
        1;0;0;0;1;
        1;1;1;1;1;
        1;0;0;0;1;
        1;0;0;0;1];%A
p2=[1;1;1;1;1;
       1;0;0;0;0;
       1;1;1;1;1;
       1;0;0;0;0;
       1;1;1;1;1];%E
p3=[1;1;1;1;1;
        0;0;1;0;0;
        0;0;1;0;0;
        0;0;1;0;0;
        1;1;1;1;1];%I
p4=[1;1;1;1;1;
        1;0;0;0;1;
        1;0;0;0;1;
        1;0;0;0;1;
        1;1;1;1;1];%O
p5=[1;0;0;0;1;
        1;0;0;0;1;
        1;0;0;0;1;
        1;0;0;0;1;
        1;1;1;1;1];%U


p=[p1 p2 p3 p4 p5];

t=[1 2 3 4 5];

net=newff(minmax(p),[5,1],{'logsig','purelin'},'trainlm');

net.trainparam.show=50;
net.trainparam.lr=0.05;
net.trainparam.max_fail=5;
net.trainparam.mem_reduc=1;
net.trainparam.min_grad=1e-10;
net.trainparam.mu=0.001;
net.trainparam.mu_inc=10;
net.trainparam.time=inf;
net.trainparam.epochs=300;
net.trainparam.goal=1e-5;

[net,tr]=train(net,p,t);

salida=sim(net,p)

error=t-salida

% w1=net.IW{1,1}
% b1=net.b{1}
% w2=net.LW{2,1}
% b2=net.b{2}
salida =

  Columns 1 through 3

   1.000085467909067   1.999946818882386   3.000529880564610

  Columns 4 through 5

   3.999966692564740   4.999945294745124


error =

   1.0e-03 *

  Columns 1 through 3

  -0.085467909067383   0.053181117613876  -0.529880564609453

  Columns 4 through 5

   0.033307435260532   0.054705254876275

EJEMPLO DE RED NEURONAL EN PYTHON 
COMPUERTA XOR


Python
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
# COMPUERTA XOR EN PYTHON USANDO KERAS
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense
 
# ENTRADA las 4 combinaciones de las compuertas XOR
training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")
 
# OBJETIVO en el mismo orden
target_data = np.array([[0],[1],[1],[0]], "float32")
 
model = Sequential()
model.add(Dense(16, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
 
model.compile(loss='mean_squared_error',
              optimizer='adam',
              metrics=['binary_accuracy'])
 
model.fit(training_data, target_data, epochs=1000)
 
# evaluamos el modelo
scores = model.evaluate(training_data, target_data)
 
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
print (model.predict(training_data).round())
Resultado

Epoch 1/1000 1/1 [==============================] - 14s 14s/step - loss: 0.2343 - binary_accuracy: 0.7500 Epoch 2/1000 1/1 [==============================] - 0s 6ms/step - loss: 0.2341 - binary_accuracy: 0.5000
.
.
.
.
Epoch 999/1000 1/1 [==============================] - 0s 4ms/step - loss: 0.0207 - binary_accuracy: 1.0000 Epoch 1000/1000 1/1 [==============================] - 0s 4ms/step - loss: 0.0206 - binary_accuracy: 1.0000 1/1 [==============================] - 1s 849ms/step - loss: 0.0206 - binary_accuracy: 1.0000 binary_accuracy: 100.00% [[0.] [1.] [1.] [0.]]




Entradas populares de este blog

AUTOAJUSTE PID: CASO PRÁCTICO DE SINTONIZACIÓN EN IMPRESORA 3D

CONTROLADOR PID Un controlador  PID es permite controlar un sistema en lazo cerrado para que alcance el estado de salida deseado. El controlador PID está compuesto de tres elementos para una acción Proporcional, Integral y Derivativa. Estas tres acciones son las que dan nombre al controlador PID. Recordemos un poco que es un controlador PID y que parámetros debemos ajustar Existe gran interés en realizar la sintonización de controladores PID en diferentes software, a continuación se presenta un ejemplo en el que se simula un control PID usando software libre SCILAB, a través de Xcos AUTOTUNIG AUTOAJUSTE DE CONTROLADORES PID El controlador PID es la solución más común a los problemas prácticos de control. Aunque controladores con acción proporcional e integral han sido utilizados desde la época en que los molinos de viento y las máquinas de vapor eran las tecnologías dominantes, la forma actual del controlador PID emergió con los controladores neumáticos en los años 30 del siglo pasad

CONTROL DIFUSO

LÓGICA DIFUSA El concepto de lógica difusa es muy común, está asociado con la manera en que las personas perciben el medio, por ejemplo ideas relacionadas con la altura de una persona, velocidad con la que se mueve un objeto, la temperatura dominante en una habitación, cotidianamente se formulan de manera ambigua y depende de quien percibe el efecto físico o químico, será su enunciado acerca de tal fenómeno.  Una persona puede ser alta o baja, algo puede moverse rápido o lento, una temperatura puede ser baja o moderada o alta, se dice que estas afirmaciones acerca de una variable son ambiguas por que rápido, bajo, alto son afirmaciones del observador, y estas pueden variar de un observador a otro.  Entonces podemos afirmar que la información puede ser valiosa, aún cuando no sea cuantificada. Podemos entender información como: Hace mucho frío en la habitación Corte el pan en rebanadas Agregue azúcar al gusto El carro se desplaza muy rápido Prepare el horno a una temperatura alta La comp