microcrad es un pequeño motor de diferenciación automática escalar escrito en C, acompañado de un perceptrón multicapa, concebido como una reimplementación del proyecto micrograd de Andrej Karpathy. Su propósito es eminentemente educativo: permitir a cualquier persona leer, modificar y experimentar con el código para comprender cómo funciona la retropropagación a nivel de escalares, sin las capas de abstracción de los frameworks de deep learning.
El núcleo del sistema es la estructura Value, que envuelve un número en coma flotante y, cuando es resultado de una operación, conserva punteros a sus operandos. Cada operación —suma, multiplicación, potencia, exponencial, logaritmo natural y ReLU— construye un nuevo nodo enlazado a sus entradas, formando un grafo acíclico dirigido: el grafo de computación. La función value_backward realiza primero una ordenación topológica en profundidad y luego recorre el grafo en sentido inverso aplicando la regla de la cadena, rellenando el campo grad de cada nodo.
La gestión de memoria se apoya en conteo de referencias: un nodo recién creado parte con ref_count = 1 y cada operación retiene a sus operandos incrementando su contador. Al liberar el nodo raíz con value_release, la liberación se propaga al resto del grafo. El repositorio no pretende ser un paquete de autograd de producción ni un framework optimizado para grandes conjuntos de datos: su valor está en la claridad del código y en la posibilidad de trazar, línea a línea, cómo se calculan los gradientes y se actualizan los pesos de una red neuronal en C.
