Пример #1
0
def train_candidate_model(model: CandidateModel, process: ElectionConstructor,
                          population: NDPopulation, max_steps: int):
    timings = Timings()
    stats = ModelStats()
    first = True
    while model.global_step < max_steps:
        winner, candidates, balance = run_sample_election(
            model, process, population, True)
        for i in range(len(candidates)):
            model.add_sample_from_candidates(candidates[i], candidates[0:i],
                                             winner)

        if model.ready():
            if first:
                print("starting to train")
                first = False

            stats.update(winner, candidates, balance)
            for i in range(5):
                with timings.time_block("model.train"):
                    model.train(128)

            if model.global_step % 1000 == 0:
                stats.print(process.name, model.global_step)
                if model.global_step < max_steps:
                    stats.reset()

    timings.print()