Trabajo Final de Semestre
Trabajo Final de Semestre
Trabajo Final de Semestre
INGENÍERIA DE SISTEMAS
Universidad Cooperativa de
Colombia
Requerimientos necesarios:
Una red neuronal artificial es un grupo interconectado de nodos similar a la vasta red de
neuronas en un cerebro biológico. Cada nodo circular representa una neurona artificial y
cada flecha representa una conexión desde la salida de una neurona a la entrada de otra.
Puerta XOR
La puerta XOR, compuerta XOR u OR exclusiva es una puerta lógica digital que implementa
el o exclusivo; es decir, una salida verdadera (1/HIGH) resulta si una, y solo una de las
entradas a la puerta es verdadera. Si ambas entradas son falsas (0/LOW) o ambas son
verdaderas, resulta en una salida falsa. La XOR representa la función de la desigualdad, es
decir, la salida es verdadera si las entradas no son iguales, de otro modo el resultado es
falso. Una manera de recordar XOR es "uno o el otro, pero no ambos".
Símbolo
FUNCIÓN BOOLEANA
La ecuación característica que describe el comportamiento de la puerta XOR es:
Python
Anaconda
Anaconda es una distribución libre y abierta1 de los lenguajes Python y R, utilizada en
ciencia de datos, y aprendizaje automático (machine learning). Esto incluye procesamiento
de grandes volúmenes de información, análisis predictivo y cómputos científicos. Está
orientado a simplificar el despliegue y administración de los paquetes de software.2
import numpy as np
def sigmoid(x):
return 1.0/(1.0 + np.exp(-x))
def sigmoid_derivada(x):
return sigmoid(x)*(1.0-sigmoid(x))
def tanh(x):
return np.tanh(x)
def tanh_derivada(x):
return 1.0 - x**2
class NeuralNetwork:
las capas = [2,3,2] entre los rangos de pasos varia entre (-1,1) asignamos valores aleatorios
a capa de entrada:
for i in range(1, len(layers) - 1):
r = 2*np.random.random((layers[i-1] + 1, layers[i] + 1)) -1
self.weights.append(r)
agregamos columna de una a las entradas x con esto agregamos la unidad de bias a la
capa de entrada:
ones = np.atleast_2d(np.ones(X.shape[0]))
X = np.concatenate((ones.T, X), axis=1)
for k in range(epochs):
i = np.random.randint(X.shape[0])
a = [X[i]]
for l in range(len(self.weights)):
dot_value = np.dot(a[l], self.weights[l])
activation = self.activation(dot_value)
a.append(activation)
deltas.reverse()
multiplicar los delta de salida con las activaciones de entrada. Para obtener el gradiente
de los pasos. Actualizar los pasos restándole un porcentaje de el gradiente.
for i in range(len(self.weights)):
layer = np.atleast_2d(a[i])
delta = np.atleast_2d(deltas[i])
self.weights[i] += learning_rate * layer.T.dot(delta)
if k % 10000 == 0: print('epochs:', k)
def print_weights(self):
print("LISTADO PESOS DE CONEXIONES")
for i in range(len(self.weights)):
print(self.weights[i])
def get_deltas(self):
return self.deltas
nn = NeuralNetwork([2,2,1])
X = np.array([[0, 0],
[0, 1],
[1, 0],
[1, 1]])
y = np.array([0, 1, 1, 0])
nn.fit(X, y,epochs=2000)
for e in X:
print("Entrdas:",e,"Salidas:",nn.predict(e))
creación de la red neuronal que nos dará los pasos para las conexiones que se puedan
utilizar.
Función del coche para evitar obstáculos.
X = np.array([[0, 0], sin obstáculo
[0, 1], sin obstáculos
[0, -1], sin obstáculos
[0.5, 1], obstáculo detectado a derecha
[0.5, -1], obstáculo a la izquierda
[1,1], demasiado cerca a derecha
[1,-1]]) demasiado cerca a la izquierda
y = np.array([[0,1], avanzar
[0,1], avanzar
[0,1], avanzar
[-1,1], giro a la izquierda
[1,1], giro a la derecha
[0,-1], retroceder
[0,-1]]) retroceder
nn.fit(X, y, learning_rate=0.03,epochs=15001)
index=0
for e in X:
print("X:",e,"y:",y[index],"Network:",nn.predict(e))
index=index+1
nn.print_weights()
Vamos a graficar la función de coste
Aquí evidenciamos como el gradiente desciende y disminuye el error a medida que pasan
las interacciones de aprendizaje.
deltas = nn.get_deltas()
valores=[]
index=0
for arreglo in deltas:
valores.append(arreglo[1][0] + arreglo[1][1])
index=index+1
https://es.wikipedia.org/wiki/Red_neuronal_artificial
https://www.atriainnovation.com/que-son-las-redes-neuronales-y-sus-funciones/
https://es.wikipedia.org/wiki/Puerta_XOR
https://sites.google.com/site/ovaselectronica/CONTENIDOS/compuerta-XOR
https://uniwebsidad.com/libros/python
https://unipython.com/cursos/curso-python-desde-0/
https://blogs.imf-formacion.com/blog/tecnologia/claves-usar-python-principiantes-
201911/