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
A continuación se presenta el código en Matlab para entrenamiento de RNA para identificación de las vocales:
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
12345678910111213141516171819202122232425 # COMPUERTA XOR EN PYTHON USANDO KERASimport numpy as npfrom keras.models import Sequentialfrom keras.layers.core import Dense# ENTRADA las 4 combinaciones de las compuertas XORtraining_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")# OBJETIVO en el mismo ordentarget_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 modeloscores = 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.]]