Implementación de una red neuronal multicapa en C++ desde cero, enfocada en resolver un problema de clasificación binaria en un espacio bidimensional. El modelo debe aprender a determinar si un punto (x, y) pertenece o no a una región con forma de anillo.
La región está definida por dos radios: r_min y r_max, clasificando como clase 1 aquellos puntos que cumplen la condición:
r_min² < x² + y² < r_max²
Por ejemplo, con r_min = 0.5 y r_max = 1.0, los puntos válidos se ubican en el rango:
0.25 < x² + y² < 1.0
Entradas: 2 valores (x, y)
Salida esperada: 1 valor (0 = fuera del anillo, 1 = dentro del anillo)
Ventaja: Se puede graficar fácilmente tanto el dataset como las predicciones del modelo.
- Datos generales
- Requisitos e instalación
- Investigación teórica
- Diseño e implementación
- Ejecución
- Análisis del rendimiento
- Trabajo en equipo
- Conclusiones
- Bibliografía
- Licencia
-
Tema: Redes Neuronales en AI
-
Grupo:
group_3_custom_name
-
Integrantes:
- Fatima Isabella Pacheco Vera – 202410182 (Responsable de investigación teórica)
- Daniela Valentina Villacorta Sotelo – 202410253 (Desarrollo de la arquitectura)La
- Valentin Tuesta – 202410251 (Implementación del modelo)
- Emma Anderson Gonzalez – 202410607 (Pruebas y benchmarking)
- Alumno E – 209900005 (Documentación y demo)
Nota: Reemplazar nombres y roles reales.
-
Compilador: GCC 11 o superior
-
Dependencias:
- CMake 3.18+
- Eigen 3.4
- [Otra librería opcional]
-
Instalación:
git clone https://github.com/EJEMPLO/proyecto-final.git cd proyecto-final mkdir build && cd build cmake .. make
Ejemplo de repositorio y comandos, ajustar según proyecto.
- Objetivo: Explorar fundamentos y arquitecturas de redes neuronales.
- Contenido de ejemplo:
-
Fundamentos de redes neuronales artificiales
-
Clasificación binaria y no lineal
-
Funciones de activación (ReLU, Sigmoid)
-
Algoritmo de retropropagación
-
Uso de redes densas en tareas de separación geométrica
- Patrones de diseño: ejemplo: Factory para capas, Strategy para optimizadores.
- Estructura de carpetas (ejemplo):
proyecto-final/
├── data/
│ └── dataset.csv
├── src/
│ ├── include/
│ │ ├── neural_network.h
│ │ ├── nn_activation.h
│ │ ├── nn_dense.h
│ │ ├── nn_interfaces.h
│ │ ├── nn_loss.h
│ │ ├── nn_optimizer.h
│ │ └── tensor.h
│ └── main.cpp
├── tools/
│ └── gen_dataset.cpp
├── .gitignore
├
-
Cómo ejecutar:
./build/neural_net_demo input.csv output.csv
-
Casos de prueba:
- Test unitario de capa densa.
- Test de función de activación ReLU.
- Test de convergencia en dataset de ejemplo.
Personalizar rutas, comandos y casos reales.
Demo de ejemplo: Video/demo alojado en
docs/demo.mp4
. Pasos:
- Preparar datos de entrenamiento (formato CSV).
- Ejecutar comando de entrenamiento.
- Evaluar resultados con script de validación.
La
-
Métricas de ejemplo:
- Iteraciones: 1000 épocas.
- Tiempo total de entrenamiento: 63.5892 segundos
- Precisión final: 71.65%.
-
Ventajas/Desventajas:
-
- Código ligero y dependencias mínimas.
- – Sin paralelización, rendimiento limitado.
-
-
Mejoras futuras:
- Implementar visualización integrada en C++
Tarea | Miembro | Rol |
---|---|---|
Investigación teórica | Fatima | Documentación y marco teórico |
Diseño de arquitectura | Daniela | Organización de archivos y clases |
Lógica del clasificador | Valentin | Implementación de red y condición |
Pruebas y benchmarking | Emma | Métricas y validación final |
Documentación y dataset | Alumno E | README y generación de datos |
Se logró construir un clasificador funcional basado en red neuronal que diferencia puntos dentro o fuera de una región en forma de anillo.
El proyecto permitió afianzar conocimientos sobre retropropagación, estructuras modulares y compilación avanzada en C++.
El trabajo colaborativo fue clave para dividir responsabilidades y mantener un flujo ordenado de desarrollo.
Actualizar con bibliografia utilizada, al menos 4 referencias bibliograficas y usando formato IEEE de referencias bibliograficas.
Este proyecto usa la licencia MIT. Ver LICENSE para detalles.