Esempio n. 1
0
        out_file += "-" + str(epoch)
    UF.trace("saving model to " + out_file + "...")
    serializer = ModelSerializer(out_file)
    serializer.save(model)

def onEpochUpdate(epoch_loss, prev_loss, epoch):
    UF.trace("Train Loss:", float(prev_loss), "->", float(epoch_loss))
    UF.trace("Train PPL:", math.exp(float(prev_loss)), "->", math.exp(float(epoch_loss)))

    if dev_data is not None:
        dev_loss = trainer.eval(dev_data, model)
        UF.trace("Dev Loss:", float(dev_loss))
        UF.trace("Dev PPL:", math.exp(float(dev_loss)))

    # saving model
    if args.save_models and (epoch + 1) % args.save_len == 0:
        save_model(epoch)        

def onTrainingFinish(epoch):
    if not args.save_models or epoch % args.save_len != 0:
        save_model(epoch)
    if epoch == args.epoch:
        UF.trace("training complete!")

""" Execute Training loop """
if args.one_epoch: one_epoch = True
else: one_epoch = False

trainer.train(train_data, model, args.epoch, onEpochStart, onBatchUpdate, onEpochUpdate, onTrainingFinish, one_epoch=one_epoch)

Esempio n. 2
0
def onBatchUpdate(output, src, trg, trained, epoch, accum_loss):
    if args.verbose:
        report(output, src, trg, trained, epoch)
    UF.trace("Trained %d: %f, col_size=%d" % (trained, accum_loss, len(trg[0])))

def save_model(epoch):
    out_file = args.model_out
    if args.save_models:
        out_file += "-" + str(epoch)
    UF.trace("saving model to " + out_file + "...")
    serializer = ModelSerializer(out_file)
    serializer.save(model)

def onEpochUpdate(epoch_loss, prev_loss, epoch):
    UF.trace("Train Loss:", float(prev_loss), "->", float(epoch_loss))
    UF.trace("Train PPL:", math.exp(float(prev_loss)), "->", math.exp(float(epoch_loss)))

    # saving model
    if args.save_models and (epoch + 1) % args.save_len == 0:
        save_model(epoch)        

def onTrainingFinish(epoch):
    if not args.save_models or epoch % args.save_len != 0:
        save_model(epoch)
    UF.trace("training complete!")

""" Execute Training loop """
trainer.train(data, model, args.epoch, onEpochStart, onBatchUpdate, onEpochUpdate, onTrainingFinish)