Exemple #1
0
def train_and_swap(fn, old, tmp, verbose=False):
    if os.path.exists(fn):
        old_model = model.BaoRegression(have_cache_data=True)
        old_model.load(fn)
    else:
        old_model = None

    new_model = train_and_save_model(tmp, verbose=verbose)
    max_retries = 5
    current_retry = 1
    while not reg_blocker.should_replace_model(old_model, new_model):
        if current_retry >= max_retries == 0:
            print("Could not train model with better regression profile.")
            return

        print("New model rejected when compared with old model. " +
              "Trying to retrain with emphasis on regressions.")
        print("Retry #", current_retry)
        new_model = train_and_save_model(tmp,
                                         verbose=verbose,
                                         emphasize_experiments=current_retry)
        current_retry += 1

    if os.path.exists(fn):
        shutil.rmtree(old, ignore_errors=True)
        os.rename(fn, old)
    os.rename(tmp, fn)
Exemple #2
0
    def load_model(self, fp):
        try:
            new_model = model.BaoRegression(have_cache_data=True)
            new_model.load(fp)

            if reg_blocker.should_replace_model(self.__current_model,
                                                new_model):
                self.__current_model = new_model
                print("Accepted new model.")
            else:
                print("Rejecting load of new model due to regresison profile.")

        except Exception as e:
            print("Failed to load Bao model from", fp, "Exception:",
                  sys.exc_info()[0])
            raise e
Exemple #3
0
def train_and_save_model(fn, verbose=True, emphasize_experiments=0):
    all_experience = storage.experience()

    for _ in range(emphasize_experiments):
        all_experience.extend(storage.experiment_experience())

    x = [i[0] for i in all_experience]
    y = [i[1] for i in all_experience]

    if not all_experience:
        raise BaoTrainingException(
            "Cannot train a Bao model with no experience")

    if len(all_experience) < 20:
        print(
            "Warning: trying to train a Bao model with fewer than 20 datapoints."
        )

    reg = model.BaoRegression(have_cache_data=True, verbose=verbose)
    reg.fit(x, y)
    reg.save(fn)
    return reg
Exemple #4
0
        all_experience.extend(storage.experiment_experience())

    x = [i[0] for i in all_experience]
    y = [i[1] for i in all_experience]

    if not all_experience:
        raise BaoTrainingException(
            "Cannot train a Bao model with no experience")

    if len(all_experience) < 20:
        print(
            "Warning: trying to train a Bao model with fewer than 20 datapoints."
        )

    reg = model.BaoRegression(have_cache_data=True, verbose=verbose)
    reg.fit(x, y)
    reg.save(fn)
    return reg


if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        print("Usage: train.py MODEL_FILE")
        exit(-1)
    train_and_save_model(sys.argv[1])

    print("Model saved, attempting load...")
    reg = model.BaoRegression(have_cache_data=True)
    reg.load(sys.argv[1])