Logo Studenta

T3_COMUERTAS_LOGICAS

¡Estudia con miles de materiales!

Vista previa del material en texto

Página 1 de 6 
 
 
INSTITUCIÓN: TECNOLÓGICO DE LA LAGUNA 
 
CARRERA: MECATRÓNICA 
 
MATERIA: INTELIGENCIA ARTIFICIAL 
 
DOCENTE: SERGIO LÓPEZ HERNÁNDEZ 
 
ALUMNO: RODRÍGUEZ GUERRA EDUARDO ANTONIO 
 
MATRICULA: 19131252 
 
TAREA 3: COMPUERTAS LOGICAS CON RED NEURONAL 
 
FECHA DE ENTREGA: 13 DE NOVIEMBRE DE 2023
 
Página 2 de 6 
 
 
Dentro de la presente practica el doctor nos solicitó elaborar redes neuronales, capaces de aprender e implementar las tablas de verdad de la AND 
OR y XOR, a fin de comprender como funciona una red neuronal. 
En si esto es gracias al aprendizaje profundo, aquel que le permite a la red evolucionar época tras época, en un principio teniendo las entradas y 
salidas de un proceso, sin conocerlo, además de la arquitectura que poseerá nuestra red neuronal, la primera época el sistema aleatoriamente 
asignará pesos a cada neurona, y en función del error presente en las salidas, ira modificando dicho valor. 
En mi caso decidí hacer una sola red neuronal capaz de reconocer cualquiera de las tres tablas de verdad, para solamente dos entradas. 
 
 
Tensorflow la use porque es la librería de cajón, aquella que me permita darle la estructura deseada a mi red neuronal, además de poder entrenarla 
y probarla tantas veces como lo requiera. 
Numpy, me sirve para ingresar entradas y salidas en forma de arreglos de forma simpe. 
Matplotlib la implemente a fin de ver gráficamente el error presente generación tras generación. 
Antes de pasar al siguiente paso dejo adjuntas las tablas de verdad que requerí para la practica 
TABLA DE AND TABLA DE OR TABLA DE XOR 
0 0 0 0 0 0 0 0 0 
0 1 0 0 1 1 0 1 1 
1 0 0 1 0 1 1 0 1 
1 1 1 1 1 1 1 1 0 
 
 
 
 
 
Página 3 de 6 
 
 Entonces se me ocurrió, y si a la red neuronal le ingreso otro parámetro aparte de las dos salidas de las compuertas, para así escoger cual tabla de 
verdad usar. 
Dando como resultado el siguiente formato XYZ, X-> selecciono que tabla de verdad usar y con YZ asigno las entradas de la tabla de verdad. 
 
 
Al final el formato queda asi: 
1 0 0 -> 0 
OR 
1 0 1 -> 1 
1 1 0 -> 1 
1 1 1 -> 1 
2 0 0 -> 0 
XOR 
2 0 1 -> 1 
2 1 0 -> 1 
2 1 1 -> 0 
3 0 0 -> 0 
AND 
3 0 1 -> 0 
3 1 0 -> 0 
3 1 1 -> 1 
Ya ingreso entradas y salidas. 
Ahora si viene lo mejor…… elaborar la arquitectura: 
 
 
 
 
 
 Para ser honestos, esta arquitectura es resultado de moverle mucho la verdad, tomando como punto 
 
Página 4 de 6 
 
Primero intente una red neuronal de dos capas y 5 neuronas cada capa, la cual funcionaba con dos de 
las 3 compuertas, XOR era la más difícil, entonces en primera instancia mejore la arquitectura agregando más capaz, y neuronas, pero no fue hasta 
que asigne que función de activación a cada capa, que los resultados empezaron a mejorar, relu la seleccione porque es la más efectiva, ya que le 
brinda mayores oportunidades de resolver problemas no lineales y tangente hiperbólica, me agrado porque permite salidas negativas y positivas. 
Lo que ayuda a que no este presente el problema de las neuronas muertas. 
Después puse solo un elemento a la salida ya que la salida es 1 o 0. 
 
Ya que los entrenamientos no demoran mucho, me pareció correcto mejorar la efectividad de la respuesta minimizando los saltos entre valores. 
 
Para el entrenamiento quise dejar visible el progreso de este, y el numero de 130 épocas fue por que en la mayoría de los entrenamientos a los 
que lo sometí la magnitud de perdida se minimizaba antes o poco después del 100 
 
 
 
 
 
 
 
 
Página 5 de 6 
 
 
 
Fragmento para graficar la tabla anterior 
 
Ya por último puse en práctica la red neuronal para determinar su eficacia, comprobé cada posible entrada y todas y cada una de ellas brindaron 
el resultado deseado, como no recordaba cómo poner el filtro para pasar de un término decimal a una de las 2 soluciones posibles, usé if. 
 
Para guardar la estructura implemente el guardado por h5. Y listo, la verdad consideró que la estructura pudo haber quedado mucho más 
compacta, ya conociendo como seleccionar las funciones de activación que yo deseo para cada capa. Pero el resultado fue tan justo que no le moví. 
Conclusiones: Aun que no lo parezca esta práctica fue muy difícil de desarrollar ya que primero tuve que crear un ambiente con Python 3.10 para 
usar tensorflow sin problemas, ya que en Python 3.11 se puso mas exigente y solicita mejores características computacionales. 
Ahora relacionado con la arquitectura, agregar capaz ocultas y funciones de activación en mi red permite brindarle más y mejores herramientas 
para solucionar los problemas que le someta. Por ejemplo, antes de agregar funciones de activación la red me daba muchos buenos resultados, 
 
 
Página 6 de 6 
 
 
pero aquellos que no eran tan lineales como la or exclusiva termino tronando, y errando en los pronósticos, entonces al agregarle funciones de 
activación fue más fácil sacarlo adelante. 
Ya por último hacer incapie en que este problema en términos generales, es sumamente sencillo de resolver ya que la mayoría de manejadores 
viene por default, pero va abriendo los ojos hacia que problemas puede ir orientado. Problemas tan complejos de programar que sea más fácil 
entrenar una red para resolverlos.

Continuar navegando