Entrenamiento de una red para modelar inglés
Este ejemplo muestra cómo entrenar una red neuronal recurrente para generar texto en inglés.
Primero, cree 300 000 ejemplos de entrenamiento de 25 personajes cada uno a partir de dos novelas.
Muestree datos los cuales están en un formato de clasificación de un problema: dada una secuencia de caracteres, prediga el siguiente carácter.
Obtenga la lista de todos los caracteres en el texto.
Construya una red que prediga una secuencia completa a la vez. Tenga en cuenta que en lugar de utilizar SequenceLastLayer antes de LinearLayer, NetMapOperator debe usarse. Como resultado, la red predice simultáneamente el siguiente carácter en la secuencia para cada carácter, en lugar de sólo predecir el último carácter de la secuencia.
Ahora construya una red de "forzado de maestros", que toma una oración objetivo y la presenta a la red de manera "escalonada": para una oración de longitud 26, presente los caracteres del 1 al 25 en la red para que produzca predicciones para los personajes desde el 2 hasta el 26, que se comparan con los personajes reales a través de CrossEntropyLossLayer para producir una pérdida.
Entrene la red en las secuencias de entrada de los datos originales.
Extraiga la cadena de predicción de resultados.
Construya a partir de un solo carácter una cadena de predicción.
Pruebe el predictor.
Cree un NetStateObject para generar texto de manera eficiente.
Genere 200 caracteres según la distribución aprendida por la red. El texto generado tiene similitud con el inglés, pero muchas palabras ni siquiera están en inglés, ya que fue entrenado en un pequeño corpus (de aproximadamente dos millones de caracteres).
Compare con una red similar entrenada de aproximadamente mil millones de caracteres.