Entradas

Mostrando entradas de mayo, 2025

Guardar Modelo y Datos de Entrenamiento de una Red Neuronal Manualmente

Imagen
Cómo Guardar un Modelo de IA Entrenado y los Datos del Entrenamiento (Red Neuronal Manual) Cuando construyes una red neuronal desde cero, sin librerías de alto nivel como TensorFlow o PyTorch, guardar el modelo y los datos de entrenamiento requiere un enfoque más manual. Esto implica almacenar los **parámetros** de tu modelo (pesos y sesgos) y los **conjuntos de datos** que utilizaste. --- Guardando el Modelo Entrenado (Pesos y Sesgos) Los parámetros de tu modelo de red neuronal creada manualmente son los arreglos de NumPy (o estructuras de datos similares) que representan los **pesos** y **sesgos** que la red ha ajustado durante el entrenamiento. 1. Guardar con NumPy ( .npy o .npz ) La forma más eficiente y recomendada de guardar arreglos de NumPy es utilizando las funciones de la propia librería NumPy: Guardar un solo arreglo ( .npy ): Puedes guardar ca...

Estructura de Entrenamiento y Red Neuronal en IA

Imagen
Estructura de Entrenamiento de un Modelo de Inteligencia Artificial y Redes Neuronales El entrenamiento de un modelo de inteligencia artificial (IA) es un proceso fundamental para que el modelo aprenda a realizar una tarea específica. A continuación, se detalla la estructura de entrenamiento, los archivos comunes que contiene un proyecto de IA y cómo se podría conceptualizar la creación manual de una red neuronal. --- Estructura de Entrenamiento de un Modelo de Inteligencia Artificial El proceso de entrenamiento de un modelo de IA, especialmente en el contexto del Machine Learning y Deep Learning, sigue una serie de pasos iterativos: Definición del Problema: Objetivo: Clarificar qué se quiere resolver (ej., clasificar imágenes, predecir precios, traducir texto). Tipo de tarea: Determinar si es clasificación, regresión, agrupación, et...

Extracción de Secciones ELF

Imagen
1. ¿Qué hace este código? Este código analiza un archivo ELF y extrae información sobre sus secciones, incluyendo: .text → Contiene el código ejecutable. .data → Contiene datos inicializados. .bss → Contiene datos no inicializados. .rodata → Contiene datos de solo lectura. .plt → Tabla de enlace de procedimientos (para llamadas a funciones externas). 2. Código fuente en C Archivo de encabezado: elf_sections.h #ifndef ELF_SECTIONS_H #define ELF_SECTIONS_H #include <stdio.h> #include <stdlib.h> #include <elf.h> void extraer_secciones_elf(const char *archivo); #endif // ELF_SECTIONS_H Archivo fuente: elf_sections.c #include "elf_sections.h" #include <fcntl.h> #include <unistd.h> #include <string.h> #include <libelf.h> void extraer_secciones_elf(const char *archivo) { int fd = open(archivo, O_RDONLY); if (fd < 0) ...

Edición y Estructura de Archivos ELF

Imagen
Este código hexadecimal representa la cabecera de un archivo ELF (Executable and Linkable Format) , que es un formato de archivo ejecutable utilizado en sistemas operativos como Linux y Unix. 7f45 4c46 0201 0100 0000 0000 0000 0000 0300 3e00 0100 0000 8011 0000 0000 0000 4000 0000 0000 0000 2839 0000 0000 0000 0000 0000 4000 3800 0d00 4000 1f00 1e00 0600 0000 0400 0000 4000 0000 0000 0000 4000 0000 0000 0000 4000 0000 0000 0000 d802 0000 0000 0000 d802 0000 0000 0000 0800 0000 0000 0000 0300 0000 0400 0000 1803 0000 0000 0000 1803 0000 0000 0000 1803 0000 0000 0000 1c00 0000 0000 0000 1c00 0000 0000 0000 0100 0000 0000 0000 0100 0000 0400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 a008 0000 0000 0000 a008 0000 0000 0000 0010 0000 0000 0000 0100 0000 0500 0000 0010 0000 0000 0000 0010 0000 0000 0000 0010 0000 0000 0000 cd07 0000 0000 0000 cd07 0000 0000 0000 0010 0000 0000 0000 0100 0000 0400 0000 0020 0000 0000 0000 0020 0000 0000 0000 0020 0000 0000 00...

Análisis de Archivos ELF y Llamadas al Sistema

Imagen
1. Relación entre funciones ELF y llamadas al sistema Las funciones dentro de un archivo ELF interactúan con el sistema operativo a través de llamadas al sistema (syscalls) . Estas llamadas permiten que los programas accedan a recursos del sistema, como archivos, memoria y procesos. Cuando un programa ejecutable en formato ELF necesita realizar una operación como leer un archivo o asignar memoria, no lo hace directamente. En su lugar, llama a una función de biblioteca (como open() o malloc() ), que a su vez invoca una llamada al sistema para comunicarse con el kernel. 2. Código fuente en C para extraer funciones y llamadas al sistema Archivo de encabezado: elf_syscalls.h #ifndef ELF_SYSCALLS_H #define ELF_SYSCALLS_H #include <stdio.h> #include <stdlib.h> #include <elf.h> void extraer_funciones_detalladas(const char *archivo); void obtener_syscalls(const char *archivo); #endif // ELF_SYSCALLS_H Archivo fuente: elf...

Análisis de Archivos ELF

Imagen
1. Interpretación del código ELF Los archivos ELF contienen información sobre cómo un programa debe ejecutarse en un sistema basado en Linux. A continuación, se muestra una tabla con detalles de la cabecera ELF: Código Hexadecimal Interpretación 7f45 4c46 Identificador ELF ( 0x7F 'E' 'L' 'F' ). 0201 Indica que es un archivo ELF de 64 bits . 0100 Especifica el endianess (little-endian). 0300 Tipo de archivo ( Ejecutable ). 3e00 Arquitectura ( x86-64 ). 0100 0000 Versión ELF. e011 0000 0000 0000 Dirección de entrada del programa. 4000 0000 0000 0000 Offset de l...

UTF-8 con y sin BOM

Imagen
1. ¿Qué es el BOM en UTF-8? El Byte Order Mark (BOM) es un conjunto especial de bytes al inicio de un archivo de texto, que indica la codificación utilizada. En UTF-8, el BOM está representado por los bytes: EF BB BF Este marcador no es obligatorio en UTF-8, pero algunos programas lo utilizan para identificar el formato del archivo. 2. Diferencias entre UTF-8 con BOM y UTF-8 sin BOM Característica UTF-8 con BOM UTF-8 sin BOM Presencia de marcador BOM Sí ( EF BB BF ) No Compatibilidad con sistemas Pueden causar problemas en algunos programas Más compatible Uso en archivos de código fuente No recomendado Recomendado Sistemas UNIX/Linux Puede mostrarse como caracteres basura (  ) ...

Makefile Manager

Imagen
Dividimos el Makefile en submódulos , cada uno con su propia lógica de construcción. Un Makefile Manager ( Makefile ) en la raíz orquesta la ejecución de los demás.   ✅ Cada módulo tiene su propio makefile.mk   ✅ El Makefile en la raíz coordina todo   ✅ Evita duplicación de código y mejora mantenimiento 📌 Ubicación de los archivos en la estructura del proyecto : /OSProject ├── build/ ├── configs/ │ ├── config.mk # Configuración general │ ├── architecture.mk # Configuración específica por arquitectura │ ├── dependencies.mk # Manejo de dependencias externas ├── doc/ ├── scripts/ │ ├── build.sh │ ├── run_debug.sh │ └── run_qemu.sh ├── src/ │ ├── arch/ │ ├── kernel/ │ ├── drivers/ ├── third_party/ ├── tools/ ├── Makefile # Gestor principal └── README.md   1. Makefile (Makefile Manager) 📌 Este archivo gestiona la ejecución de los demás submódulos : # Carga los...