Example #1
0
def train(regularizations, dataset='mnist', fname='results_softmax_regression_mnist'):
    train_test_ratio = 0.5
    if dataset == 'mnist':
        x, y, x_test, y_test = get_mnist(train_test_ratio)
    elif dataset == 'iris':
        x, y, x_test, y_test = get_iris(train_test_ratio)

    results = []
    for reg_i in xrange(0, len(regularizations)):
        intermediate_results = []
        print "reg:", reg_i
        for i in xrange(0, 10):
            print "    i:", i
            reg = regularizations[reg_i]
            r = tf_softmax_regression.train_softmax(x, y, x_test, y_test, learning_rate=0.005,
                                                            max_iterations=1000000, regularization=reg,
                                                            w_diff_term_crit=0.0001, verbose=True)
            intermediate_results.append(r)
        results.append(intermediate_results)

    # print results
    for el_i in xrange(len(results)):
        print el_i
        el = results[el_i]
        for e in el:
            print e
    import pickle
    pickle.dump(results, open(fname, 'wb'))
Example #2
0
def full_failure_recovery(dataset, model_type, regularizations):

    train_test_ratio = 0.5
    if dataset == 'mnist':
        x, y, x_test, y_test = get_mnist(train_test_ratio)
    elif dataset == 'iris':
        x, y, x_test, y_test = get_iris(train_test_ratio)
    elif dataset == 'diabetes':
        x, y, x_test, y_test = get_diabetes(train_test_ratio)
    elif dataset == 'covertype':
        x, y, x_test, y_test = get_covertype(train_test_ratio)
    elif dataset == 'boston':
        x, y, x_test, y_test = get_boston(train_test_ratio)
    else:
        print "warning dataset:", dataset, "not found\nexiting!"
        try:
            sys.stdout.flush()
        except IOError as e:
            if e.errno == errno.EPIPE:
                print "broken pipe?"
        return
    f_name_train = 'results_' + model_type + '_' + dataset
    f_name_warmstart = 'results_warmstart_' + model_type + '_' + dataset
    train_all_parallel(x,
                       y,
                       x_test,
                       y_test,
                       fname=f_name_train,
                       model_type=model_type,
                       w_diff_term_crit=w_diff_term_crit,
                       learning_rate=learning_rate,
                       regularizations=regularizations)
    warmstart_all_parallel(x,
                           y,
                           x_test,
                           y_test,
                           fname_in=f_name_train,
                           fname_out=f_name_warmstart,
                           model_type=model_type,
                           w_diff_term_crit=w_diff_term_crit,
                           learning_rate=learning_rate,
                           regularizations=regularizations)
    # # warmstart_all_parallel(fname_in='/home/nikste/workspace-python/parallel-failure-recovery/experiments_results/mnist/results_softmax_regression_mnist', dataset='mnist', fname_out='results_softmax_regression_warmstart_mnist')
    print "training", dataset, model_type, "full failure"
    try:
        sys.stdout.flush()
    except IOError as e:
        if e.errno == errno.EPIPE:
            print "broken pipe?"
    visualize_training_result_from_parallel(f_name_train)
    visualize_warmstart_result_from_parallel(f_name_warmstart, f_name_train)
    print "great success!"
    try:
        sys.stdout.flush()
    except IOError as e:
        if e.errno == errno.EPIPE:
            print "broken pipe?"
def warmstart(fname_in='results_softmax_regression_mnist',
              dataset='mnist',
              fname_out='results_softmax_regression_warmstart_mnist'):
    train_test_ratio = 0.5
    if dataset == 'mnist':
        x, y, x_test, y_test = get_mnist(train_test_ratio)
    elif dataset == 'iris':
        x, y, x_test, y_test = get_iris(train_test_ratio)

    regularizations = [100., 10., 1., 0.1, 0.01, 0.001, 0.0001]

    import pickle
    pretrained_models = pickle.load(open(fname_in, 'rb'))

    results = []
    for reg_i in xrange(0, len(pretrained_models)):
        # all have same regularization parameter
        intermediate_results = []
        print "reg:", reg_i
        for i in xrange(0, len(pretrained_models[reg_i])):
            print "    i:", i
            r_int = []
            reg_warmstart = pretrained_models[reg_i][i]['regularization']
            model = pretrained_models[reg_i][i]['model:']

            for j in xrange(0, len(regularizations)):
                reg = regularizations[j]
                print "----training:", reg, "with initialization of:", reg_warmstart
                # r = tf_linear_regression.train_single_output(x, y, x_test, y_test, learning_rate=0.0001, max_iterations=1000000, regularization=reg, w_diff_term_crit=0.000001, verbose=True)
                r = tf_logistic_regression.train_softmax_output(
                    x,
                    y,
                    x_test,
                    y_test,
                    learning_rate=0.1,
                    max_iterations=1000000,
                    regularization=reg,
                    w_diff_term_crit=0.000001,
                    verbose=True,
                    model=model)

                r['initialized_with_regularization'] = reg_warmstart
                r_int.append(r)

            intermediate_results.append(r_int)
        results.append(intermediate_results)

    pickle.dump(results, open(fname_out, 'wb'))
def partial_failure_recovery(dataset, model_type, regularizations):
    train_test_ratio = 0.5
    if dataset == 'mnist':
        x, y, x_test, y_test = get_mnist(train_test_ratio)
    elif dataset == 'iris':
        x, y, x_test, y_test = get_iris(train_test_ratio)
    elif dataset == 'diabetes':
        x, y, x_test, y_test = get_diabetes(train_test_ratio)
    elif dataset == 'covertype':
        x, y, x_test, y_test = get_covertype(train_test_ratio)
    elif dataset == 'boston':
        x, y, x_test, y_test = get_boston(train_test_ratio)
    else:
        print "warning dataset:", dataset, "not found\nexiting!"
        try:
            sys.stdout.flush()
        except IOError as e:
            if e.errno == errno.EPIPE:
                print "broken pipe?"
        return

    f_name_train = 'results_' + model_type + '_' + dataset
    f_name_warmstart = 'results_warmstart_corruption_' + model_type + '_' + dataset
    # train_all_parallel(x, y, x_test, y_test,fname=f_name_train, model_type=model_type, w_diff_term_crit=w_diff_term_crit, learning_rate=learning_rate, regularizations=regularizations)
    warmstart_partial_all_parallel(x, y, x_test, y_test, fname_in=f_name_train, fname_out=f_name_warmstart, model_type=model_type, w_diff_term_crit=w_diff_term_crit, learning_rate=learning_rate, regularizations=regularizations, corruption_ratio=0.5)
    # # warmstart_all_parallel(fname_in='/home/nikste/workspace-python/parallel-failure-recovery/experiments_results/mnist/results_softmax_regression_mnist', dataset='mnist', fname_out='results_softmax_regression_warmstart_mnist')
    print "training", dataset, model_type, "partial failure"
    try:
        sys.stdout.flush()
    except IOError as e:
        if e.errno == errno.EPIPE:
            print "broken pipe?"
    visualize_training_result_from_parallel(f_name_train)
    visualize_warmstart_result_from_parallel(f_name_warmstart, f_name_train)
    print "great success!"
    try:
        sys.stdout.flush()
    except IOError as e:
        if e.errno == errno.EPIPE:
            print "broken pipe?"
def warmstart(fname_in='results_softmax_regression_mnist', dataset='mnist', fname_out='results_softmax_regression_warmstart_mnist'):
    train_test_ratio = 0.5
    if dataset == 'mnist':
        x, y, x_test, y_test = get_mnist(train_test_ratio)
    elif dataset == 'iris':
        x, y, x_test, y_test = get_iris(train_test_ratio)

    regularizations = [100., 10., 1., 0.1, 0.01, 0.001, 0.0001]

    import pickle
    pretrained_models = pickle.load(open(fname_in, 'rb'))

    results = []
    for reg_i in xrange(0, len(pretrained_models)):
        # all have same regularization parameter
        intermediate_results = []
        print "reg:", reg_i
        for i in xrange(0, len(pretrained_models[reg_i])):
            print "    i:", i
            r_int = []
            reg_warmstart = pretrained_models[reg_i][i]['regularization']
            model = pretrained_models[reg_i][i]['model:']

            for j in xrange(0, len(regularizations)):
                reg = regularizations[j]
                print "----training:", reg, "with initialization of:", reg_warmstart
                # r = tf_linear_regression.train_single_output(x, y, x_test, y_test, learning_rate=0.0001, max_iterations=1000000, regularization=reg, w_diff_term_crit=0.000001, verbose=True)
                r = tf_logistic_regression.train_softmax_output(x, y, x_test, y_test, learning_rate=0.1,
                                                                max_iterations=1000000, regularization=reg,
                                                                w_diff_term_crit=0.000001, verbose=True, model=model)

                r['initialized_with_regularization'] = reg_warmstart
                r_int.append(r)

            intermediate_results.append(r_int)
        results.append(intermediate_results)

    pickle.dump(results, open(fname_out, 'wb'))