Cómo es un «reconocedor de dígitos escritos a mano» con visualización en tiempo real

Handwritten Digit Recognizer CNN

Este reconocedor de dígitos escritos a mano de @kishimisu tiene la peculiaridad de que muestra una visualización de lo que sucede en el código en tiempo real. Así, mientras el usuario dibuja un número en la capa de entrada (el recuadro negro de la derecha), la gráfica de barras de abajo a la izquierda muestra la salida, esto es, cuál de los dígitos del 0 al 9 tiene mayor probabilidad de ser el que se ha dibujado… que esto tampoco es una ciencia exacta.

El código es una RNC (red neuronal convolucional) con varias capas y 2023 parámetros entrenables, que también pueden verse en una de las pestañas. El código está dividido en varias secciones: la parte común, los buffers A, B, C y D, cada uno con sus diversas funciones.

Es interesante ver cómo se va transformando el dibujo original en las convoluciones y finalmente en probabilidades, que es de lo que se trata. Hay dígitos que tardan en reconocerse (como el 0, que al principio siempre le parece un 7) reconocen muy rápidamente y sin error, mientras que otros como el 1 son más directos. El 7 casi siempre aparece el primero, curiosamente. Algunos como el 8 no se reconocen correctamente hasta cuando se han terminado de dibujar. Una dificultad añadida es que hay que dibujar los dígitos con un solo trazo.

Relacionado: