Vamos a jugar con un problema de lenguaje natural, con redes y datos del tipo de las redes ChatGPT, pero a una escala mucho menor, para que sea viable en nuestros equipos. A escala mucho más reducida, seguiremos este ejemplo. Aquí tienes un comprimido con los programas que vamos a usar, la mayoría modificados de la referencia anterior

El problema que nos planteamos es que una red aprenda a hablar en un lenguaje muy reducido, que consiste en operaciones aritméticas, contadas textualmente, del tipo "dos y dos son cuatro". Aquí tienes un esquema de otros posibles casos, que no vamos a estudiar. El problema puede subir si las expresiones son de varios operandos. Para generar los datos, usaremos el programa aritmetica.py. Cuando lo ejecutes, dale valor a la cantidad de "frases" a generar.

Ahora que ya has generado los datos, puedes ajustar la red con el programa main.py

El significado de cada variable novedosa es:

dimcodif
Dimensión del vector numérico que representa las palabras. Aunque nuestro problema es pequeño, se puede poner bastante
ncapas
Número de capas, 2 es un mínimo, pero no creas que se gana mucho poniendo una barbaridad, porque el ajuste se puede perder
ocultos
Número de procesadores ocultos en el bloque. Es bueno poner decenas o cientos. Lo mismo que con las capas, no necesariamente más es mejor.
velocidad
Aquí puede que venga bien un valor mayor.
atenciones
El tamaño de la capa de "atención" o contexto (divisor de la dimensión de representación)
probanular
Ya sabes que es la probabilidad de anular un procesador aleatoriamente. No siempre es ventajoso.
lonfrases
La longitud de frases con las que aprende la red. Normalmente le viene bien coger bastante, aunque eso incluya varias frases en una

Si ves un buen ajuste, puedes probar a que la red "hable" usando el programa generate.py Lo que va a hacer es coger una palabra al azar y arrancarse por ella soltándonos un discurso que intenta ser coherente.

Solo necesitas tocar un valor:

npalabras
Cantidad de palabras a generar

¡A ver qué sale!