ComenzarEmpieza gratis

Entrenamiento del modelo con validación

Aquí entrenarás el modelo utilizando Teacher Forcing y también realizarás un paso de validación. Entrenarás el modelo durante múltiples épocas y múltiples iteraciones. A continuación, al final de cada época, ejecutarás el paso de validación y obtendrás los resultados.

Para ello, se te ha proporcionado en_text (frases en inglés), fr_text (frases en francés), la función sents2seqs() y nmt_tf (el modelo compilado). También tienes cargados tr_en y tr_fr (datos de entrenamiento) y v_en y v_fr (datos de validación).

Este ejercicio forma parte del curso

Traducción automática con Keras

Ver curso

Instrucciones del ejercicio

  • Extrae las entradas (todas las palabras excepto la última) y las salidas (todas las palabras excepto la primera) del decodificador de de_xy.
  • Entrena el modelo con un único lote de datos.
  • Crea entradas y salidas del decodificador a partir de los datos de validación de forma similar a como lo hiciste con los datos de entrenamiento.
  • Evalúa el modelo en el conjunto de datos de validación para obtener la pérdida de validación y la precisión.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

for ei in range(n_epochs):
  for i in range(0,train_size,bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
    de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Create a single batch of decoder inputs and outputs
    de_x, de_y = ____[:,____,:], de_xy[:,____,:]
    # Train the model on a single batch of data
    nmt_tf.____([____,____], de_y)      
  v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
  # Create a single batch of validation decoder inputs and outputs
  v_de_xy = ____('target', ____, onehot=____)
  v_de_x, v_de_y = ____[____], v_de_xy[____]
  # Evaluate the trained model on the validation data
  res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
Editar y ejecutar código