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"))
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)
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)
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)
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))
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)
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)
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)