PlotNeuralNet permite crear diagramas de redes neuronales mediante código LaTeX, eliminando la necesidad de herramientas gráficas complejas. Este sistema combina scripts Python con el motor de composición TikZ para generar ilustraciones técnicas listas para publicaciones académicas.
Configuración del Entorno
Clona el repositorio y prepara las dependencias esenciales:
git clone https://github.com/MichaelJanz/PlotNeuralNet
cd PlotNeuralNet
Instala los paquetes LaTeX requeridos según tu sistema operativo:
- En distribuciones basadas en Debian: ```
sudo apt install texlive texlive-pictures texlive-latex-extra
- Usuarios de macOS deben instalar MacTeX
- Windows requiere MiKTeX junto con un entorno de terminal POSIX
Generación Básica de Diagramas
Accede al directorio de ejemplos y ejecuta el script de compilación:
cd ejemplos_python
python3 generar_diagrama.py ejemplo_basico
Este proceso produce ejemplo_basico.pdf mostrando una arquitectura CNN completa con capas convolucionales, de agrupación y totalmente conectadas. El flujo de datos se representa mediante conexiones geométricas precisas.
Estructura del Proyecto
El sistema se organiza en tres componentes clave:
- Biblioteca de ejemplos: Directorio
ejemploscon implementaciones de redes estándar (ResNet, U-Net, etc.) - Definiciones visuales: Archivos
.styencapasque controlan estilos de cajas, esferas y conexiones - Moter de generación: Módulo
motor_tikzcon funciones para construir elementos gráficos mediante programación
Creación de Arquitecturas Personalizadas
Define redes mediante código Python utilizando la API estructurada:
from motor_tikz.construccion import *
esquema = [
encabezado_tikz(),
inicio_documento(),
# Definición de capas personalizadas
capa_conv(
nombre="cnn_1",
filas=28,
columnas=28,
canales=1,
posicion="(0,0,0)"
),
capa_agrupacion(
nombre="pool_1",
tamano=2,
posicion_relativa="(1,0,0)"
),
final_documento()
]
def construir():
generar_pdf(esquema, "mi_red.tex")
if __name__ == "__main__":
construir()
Los parámetros dimensionales (filas, columnas) controlan la escala visual, mientras que posicion_relativa gestiona la disposición espacial.
Implementación de Redes Complejas
Para arquitecturas avanzadas como U-Net, utiliza bloques predefinidos con conexiones cruzadas:
bloque_encoder = crear_bloque_doble(
nombre_base="codificador",
profundidad_inicial=64,
posicion_inicial="(0,0,0)"
)
bloque_decoder = crear_bloque_transpuesto(
nombre_base="decodificador",
profundidad_salida=128,
conexion_salto="codificador_salida"
)
conexion = generar_salto(
origen="codificador_caracteristicas",
destino="decodificador_entrada",
desplazamiento=1.5
)
Las conexiones cruzadas se configuarn mediante coordneadas relativas y factores de desplazamiento para mantener la claridad visual.
Solución de Problemas Típicos
Errores frecuentes y sus correcciones:
- Archivos .sty no encontrados: Verifica que
capas/esté en el PATH de LaTeX mediantekpsewhich - Desbordamiento de memoria: Reduce dimensiones con
escala_global=0.8en la configuración del documento - Colores inconsistentes: Modifica la paleta en
recursos/colores.texusando definiciones RGB personalizadas