Ejemplo n.º 1
0
def main(n_iter, path_logd=""):
    if path_logd is None:
        path_logd = ""
    if path_logd != "":
        path_logd = prepare_logd(path_logd,
                                 redirect_std=False,
                                 timestamp=False)

    print("sampling")
    smodel = get_model_by_size("small")
    xseqs, yseqs = sample_from_model(smodel, n_samples=50, len_seq=50)

    # several models will be added
    name_nstates = {
        "small (1,1,1)": (1, 1, 1),
        "med (2,2,2)": (2, 2, 2),
        "large (5,5,5)": (5, 5, 5)
    }

    models = {}
    for name, n_states in name_nstates.items():
        m = gen_model(n_states)
        models[name] = m
    print("benchmark training")
    benchs = {}
    for name, model in models.items():
        sec = time_train(model, xseqs, yseqs, n_iter=n_iter)
        benchs[name] = sec

    print(format_bench_result(benchs, n_iter),
          file=open(os.path.join(path_logd, "benchs.txt"), 'w'))

    pickle.dump(benchs, open(os.path.join(path_logd, "benchs.pkl"), "wb"))
Ejemplo n.º 2
0
def main(path_logd="", size="med"):
    """
    incremental model selection
    model size: med
    """
    if path_logd != "":
        path_logd = prepare_logd(path_logd)

    print(__name__)
    print(inspect.getsource(main))


    smodel = get_model_by_size(size)
    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=50)

    models = incremental_model_selection(xseqs, yseqs, stop_threshold=1e-4, shrink_threshold=1e-2,
                                         max_iter=200, verbose=True, verbose_level=1,
                                         max_n_states=5)

    for i in range(min(3, len(models))):
        print("{} th model".format(i))
        models[i]._print_states()

    pickle.dump(models, open(path_logd + "models.pkl", "wb"))

    print("detailed model")
    models[0]._print_states(verbose_level=2)
Ejemplo n.º 3
0
def main(path_logd="", size="med"):
    """
    incremental model selection
    model size: med
    """

    if path_logd != "":
        path_logd = prepare_logd(path_logd)

    print(__name__)
    print(inspect.getsource(main))

    smodel = get_model_by_size(size)
    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=50)

    models = decremental_greedy_selection(xseqs,
                                          yseqs,
                                          stop_threshold=1e-4,
                                          shrink_threshold=1e-2,
                                          max_iter=200,
                                          verbose=True,
                                          verbose_level=1,
                                          max_n_states=5,
                                          sorted=False)

    monitor = models[-1].monitor

    pickle.dump(monitor, open(path_logd + "monitor.pkl", "wb"))
    pickle.dump(models, open(path_logd + "models.pkl", "wb"))

    models.sort(key=lambda m: -m._last_score)

    print("detailed model")
    models[0]._print_states(verbose_level=2)
Ejemplo n.º 4
0
def main():
    """
    PHMM small
    sample from small mode and fit on PHMM
    """
    print(__name__)
    print(inspect.getsource(main))

    smodel = small_model()
    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=30)

    results = []
    max_nins = 5
    n_same_setting = 3
    for n_xins in range(1, max_nins + 1):
        for n_yins in range(1, max_nins + 1):
            for i in range(1, n_same_setting + 1):
                print("===========")
                print('{} th same setting'.format(i))
                print('training model of ...')
                print('n_xins', n_xins)
                print('n_yins', n_yins)

                fmodel = FABPHMM(n_match_states=1,
                                 n_xins_states=n_xins,
                                 n_yins_states=n_yins,
                                 shrink_threshold=1e-2,
                                 stop_threshold=1e-4,
                                 shrink=False)

                fic = fmodel.fit(xseqs, yseqs, max_iter=500, verbose=True, verbose_level=1)

                result = {}
                result["n_xins"] = n_xins
                result["n_yins"] = n_yins
                result["fic"] = fic
                result["n_hstates"] = fmodel._n_hstates
                result["n_xins"] = n_xins
                result["n_yins"] = n_yins

                results.append(result)

                print("end training with...")
                print(result)

                print()
                sys.stdout.flush()

    results.sort(key=lambda r: - r["fic"])

    print(results)
Ejemplo n.º 5
0
def main():
    """
    PHMM small
    sample from small mode and fit on PHMM
    """
    print(__name__)
    print(inspect.getsource(main))

    smodel = small_model()
    fmodel = FABPHMM(n_match_states=1,
                     n_xins_states=10,
                     n_yins_states=10,
                     shrink_threshold=1e-2,
                     stop_threshold=1e-6)

    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=30)
    fmodel.fit(xseqs, yseqs, max_iter=10000, verbose=True)
    print("end with n_hstates {}".format(fmodel._n_hstates))
Ejemplo n.º 6
0
def main():
    """
    sample from small model and fit to PHMM
    start from true props
    """
    print(__name__)
    print(inspect.getsource(main))

    smodel = small_model()
    fmodel = PHMM(n_match_states=1,
                  n_xins_states=1,
                  n_yins_states=1,
                  initprob=smodel._initprob,
                  transprob=smodel._transprob,
                  emitprob=smodel._emitprob)

    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=30)
    fmodel.fit(xseqs, yseqs, max_iter=10000, verbose=True)
Ejemplo n.º 7
0
def main():
    """
    PHMM med
    sample from med mode and fit on FABPHMM without shrinkage
    """
    print(__name__)
    print(inspect.getsource(main))

    smodel = med3_model()
    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=50)

    fab_small = FABPHMM(n_match_states=1,
                     n_xins_states=1,
                     n_yins_states=1,
                     shrink_threshold=1e-2,
                     stop_threshold=1e-4,
                     shrink=False)

    fab_med = FABPHMM(n_match_states=1,
                     n_xins_states=2,
                     n_yins_states=2,
                     shrink_threshold=1e-2,
                     stop_threshold=1e-4,
                     shrink=False)

    phmm_small = PHMM(n_match_states=1,
                      n_xins_states=1,
                      n_yins_states=1,
                      stop_threshold=1e-4)

    phmm_med = PHMM(n_match_states=1,
                      n_xins_states=2,
                      n_yins_states=2,
                      stop_threshold=1e-4)



    fic_small = fab_small.fit(xseqs, yseqs, max_iter=500, verbose=True, verbose_level=1)
    ll_small = fab_small.score(xseqs, yseqs, type="ll")

    fic_med =  fab_med.fit(xseqs, yseqs, max_iter=500, verbose=True, verbose_level=1)
    ll_med = fab_med.score(xseqs, yseqs, type="ll")

    phmm_small.fit(xseqs, yseqs, max_iter=500, verbose=True, verbose_level=1)
    ll_phmms = phmm_small.score(xseqs, yseqs)
    phmm_med.fit(xseqs, yseqs, max_iter=500, verbose=True, verbose_level=1)
    ll_phmmm = phmm_med.score(xseqs, yseqs)

    ll_org = smodel.score(xseqs, yseqs)
    smodel.fit(xseqs, yseqs)
    ll_org_fit = smodel.score(xseqs, yseqs)

    print("dump fab_small")
    fab_small._print_states(verbose_level=2)
    print("dump fab_med")
    fab_med._print_states(verbose_level=2)
    print("dump phmm_small")
    phmm_small._print_states(verbose_level=2)
    print("dump phmm_med")
    phmm_med._print_states(verbose_level=2)

    print("fic_small", fic_small)
    print("ll_small", ll_small)
    print("fic_med", fic_med)
    print("ll_med", ll_med)
    print("ll_phmms", ll_phmms)
    print("ll_phmmm", ll_phmmm)
    print("ll_org", ll_org)
    print("ll_org", ll_org_fit)
Ejemplo n.º 8
0
def main():
    """
    PHMM med
    sample from med mode and fit on FABPHMM without shrinkage
    """
    print(__name__)
    print(inspect.getsource(main))

    smodel = med_model()
    xseqs, yseqs = sample_from_model(smodel, n_samples=200, len_seq=50)

    results = []
    max_nins = 3
    max_nmat = 3
    n_same_setting = 1
    for n_xins in range(1, max_nins + 1):
        for n_yins in range(1, max_nins + 1):
            for n_match in range(1, max_nmat + 1):
                for i in range(1, n_same_setting + 1):
                    print("===========")
                    print('{} th same setting'.format(i))
                    print('training model of ...')
                    print('n_xins', n_xins)
                    print('n_yins', n_yins)
                    print('n_match', n_match)

                    fmodel = FABPHMM(n_match_states=n_match,
                                     n_xins_states=n_xins,
                                     n_yins_states=n_yins,
                                     shrink_threshold=1e-2,
                                     stop_threshold=1e-4,
                                     shrink=False)

                    fic = fmodel.fit(xseqs,
                                     yseqs,
                                     max_iter=500,
                                     verbose=True,
                                     verbose_level=1)

                    result = {}
                    result["n_xins"] = n_xins
                    result["n_yins"] = n_yins
                    result['n_match'] = n_match
                    result["fic"] = fic
                    result["n_hstates"] = fmodel._n_hstates
                    result["model"] = fmodel

                    results.append(result)

                    print("end training with...")
                    print(result)

                    print()
                    sys.stdout.flush()

    results.sort(key=lambda r: -r["fic"])

    for i, r in enumerate(results):
        print("{}th result".format(i))
        print(r)
        r["model"]._print_states(verbose_level=2)