
Tinn (Tiny Neural Network) es una biblioteca de red neuronal libre de dependencia de 200 líneas escrita en C99.
Para una demostración sobre cómo aprender dígitos escritos a mano, obtenga algunos datos de capacitación:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
Los datos de entrenamiento consisten en dígitos escritos a mano escritos lenta y rápidamente. Cada línea en el conjunto de datos corresponde a un dígito escrito a mano. Cada dígito tiene un tamaño de 16x16 píxeles que dan 256 entradas a la red neuronal.
Al final de la línea, 10 dígitos significan el dígito escrito a mano:
0: 1 0 0 0 0 0 0 0 0 0
1: 0 1 0 0 0 0 0 0 0 0
2: 0 0 1 0 0 0 0 0 0 0
3: 0 0 0 1 0 0 0 0 0 0
4: 0 0 0 0 1 0 0 0 0 0
...
9: 0 0 0 0 0 0 0 0 0 1
Esto da 10 salidas a la red neuronal. El programa de prueba generará la precisión para cada dígito. Espere una precisión superior al 99% para el dígito correcto, y menos de la precisión del 0.1% para los otros dígitos.
Portable: se ejecuta donde está presente un compilador C99 o C ++ 98.
Activación sigmoidal.
Una capa oculta.
Tinn nunca usará más que la biblioteca estándar C.
Tinn es ideal para sistemas integrados. Entrena un modelo en tu poderoso escritorio y cárguelo en un microcontrolador y use el convertidor analógico a digital para predecir eventos en tiempo real.
El código fuente de TINN siempre será de menos de 200 líneas. Las funciones externas en el encabezado Tinn están protegidas con el espacio de nombres XT que se compone de Tinn externo .
Tinn puede ser fácilmente múltiple con un poco de ingenio, pero la rama maestra permanecerá enhebrada para ayudar al desarrollo de sistemas integrados.
TINN no sembra el generador de números aleatorios. No olvides hacerlo tú mismo.
Siempre baraja sus datos de entrada. Morda nuevamente después de cada iteración de entrenamiento.
Obtenga una mayor precisión de capacitación al recocir su tasa de aprendizaje. Por ejemplo, multiplique su tasa de aprendizaje por 0.99 cada iteración de entrenamiento. Esto se concentrará en un buen mínimo de aprendizaje.
Tinn es una práctica en minimalismo.
Tinn no es una biblioteca de red neural C totalmente destacada como Kann o Genann:
https://github.com/attractivechaos/kann
https://github.com/codeplea/genann
Rust: https://github.com/dvdplm/rustinn
Un tutorial con Tinn Nn y Ctypes
Pequeña biblioteca de redes neuronales en 200 líneas de código