Exemplo n.º 1
0
            _start = time.time()

        if args.update_num % args.log_valid_every_n == 0:
            valid_accumulator = Accumulator(accs, disps)
            _start = time.time()
            for v_i, v_batch in enumerate(valid_batches[:4]):
                dynet.renew_cg()
                result = lm.process_batch(v_batch, training=False)
                valid_accumulator.update(result)
            print "[[ Validation %6d | " % args.update_num, valid_accumulator.pp(
            ), "| Time: %4f ]]" % (time.time() - _start),
            if args.output:
                print "(logging to %s)" % args.output,
                with open(args.output, "a") as outfile:
                    outfile.write("\n%d," % args.update_num +
                                  valid_accumulator.lp())
            if args.save:
                if best_score is None or best_score > valid_accumulator.values[
                        "loss"]:
                    print "new best...saving to", args.save,
                    best_score = valid_accumulator.values["loss"]
                    model.save(args.save)
            trainer.status()
            if "samples" in result: print "\n" + vocab.pp(result["samples"][0])
            print "\n"
            _start = time.time()

    # trainer.update_epoch()

# Test evaluation
test_data = util.load_data(args.test_data, DATA_VIEW, args.start_token,