callbacks = Callbacks(model, eval_set=valid_set, **args.callback_args) # train model model.fit(train_set, optimizer=optimizer, num_epochs=args.epochs, cost=cost, callbacks=callbacks) # obtain predictions shape = (valid_set.nbatches, args.batch_size, time_steps) if num_beams == 0: ypred = model.get_outputs(valid_set) # flip the reversed predictions back to normal sentence order prediction = ypred.argmax(2).reshape(shape).transpose(1, 0, 2)[:, :, ::-1] else: ypred = model.get_outputs_beam(valid_set, num_beams=num_beams) prediction = ypred.reshape(shape).transpose(1, 0, 2)[:, :, ::-1] # print some examples src_dict, tgt_dict = valid_set.s_index_to_token, valid_set.t_index_to_token for i in range(3): print_sample(ex_source=valid_set.X[i, 0, :], ex_reference=valid_set.y[i, 0, :], ex_prediction=prediction[i, 0, :], src_dict=src_dict, tgt_dict=tgt_dict) # compute BLEU scores inputs = valid_set.X[:, :valid_set.nbatches, :] source_sentences = bleu_format(inputs, tgt_dict, valid_set.nbatches, args.batch_size) generated = bleu_format(prediction, tgt_dict, valid_set.nbatches, args.batch_size)