コード例 #1
0
def run_comp_learning():
    input_type = 'sin'
    np.random.seed(123)
    num_hidden_units = 20
    noise = 0.1
    lr = 0.2
    n_epochs = 100
    batch_train = False

    cov = 0.5
    x_train, y_train, x_test, y_test = Utils.create_dataset(input_type, noise)

    mean = Utils.compute_rbf_centers(num_hidden_units)

    model = rbf_model(x_train,
                      y_train,
                      mean,
                      cov,
                      n_epochs,
                      num_hidden_units,
                      lr,
                      batch_train=batch_train)
    model.fit()

    predictions = model.forward_pass(x_test, True)
    error = model.evaluate(x_test, y_test, transform=True)
    print(error)
コード例 #2
0
def experimen_2d_data():
    x_train, y_train, x_test, y_test = Utils.load_ballist_data()

    lr = 0.1
    n_epochs = 200
    batch_train = False

    threshold = 0
    cov = 0.5

    predictions_ = []
    best_error = 100
    best_node = -1

    for i in np.arange(1, 15, 1):

        mean = Utils.compute_rbf_centers_competitive_learning(
            x_train, i, eta=0.2, iterations=600, threshold=threshold)

        model = rbf_model(x_train,
                          y_train,
                          mean,
                          cov,
                          n_epochs,
                          i,
                          lr,
                          batch_train=batch_train)
        model.fit()

        predictions = model.forward_pass(x_test, True)
        error = model.evaluate(x_test, y_test, transform=True)
        print(error)

        if error < best_error:
            best_error = error
            best_node = i
            predictions_ = predictions
        print("best error {0}, best node {1}".format(best_error, best_node))
    print("best error {0}, best node {1}".format(best_error, best_node))

    best_mean_cl = Utils.compute_rbf_centers_competitive_learning(
        x_train, best_node, eta=0.2, iterations=200, threshold=threshold)

    best_means = Utils.compute_rbf_centers(best_node, x_train)

    # print(best_mean_cl)

    Utils.plot_data_means(x_train, best_means, best_mean_cl,
                          'Plot data along with means')

    Utils.plot_pred_actual(
        predictions_, y_test,
        'RBF on 2d data lr : {0}, sigma : {1}'.format(lr, cov))
コード例 #3
0
def experiment_rbf_with_noise():
    input_type = 'sin'
    np.random.seed(123)
    noise = 0.1
    lr = 0.1
    n_epochs = 200
    batch_train = False
    cov = 0.2

    x_train, y_train, x_test, y_test = Utils.create_dataset(input_type,
                                                            noise=noise)

    predictions_ = []
    best_error = 100
    best_node = -1

    for i in np.arange(1, 49, 1):

        # mean = Utils.compute_rbf_centers(i)
        mean = Utils.compute_rbf_centers_competitive_learning(x_train,
                                                              i,
                                                              eta=0.2,
                                                              iterations=600,
                                                              threshold=0.2)

        model = rbf_model(x_train,
                          y_train,
                          mean,
                          cov,
                          n_epochs,
                          i,
                          lr,
                          batch_train=batch_train)

        model.fit()

        predictions = model.forward_pass(x_test, True)
        error = model.evaluate(x_test, y_test, transform=True)

        if error < best_error:
            best_error = error
            best_node = i
            predictions_ = predictions
        print("best error {0}, best node {1}".format(best_error, best_node))
    print("best error {0}, best node {1}".format(best_error, best_node))
    Utils.plot_pred_actual(
        predictions_, y_test,
        'sequential noisy RBF , sin(2x) lr : {0}, sigma : {1}'.format(lr, cov))
コード例 #4
0
def experiment_plot_error_with_nodes():
    input_type = 'sin'
    np.random.seed(123)
    noise = 0.1
    lr = 0.01
    n_epochs = 300
    batch_train = False
    cov = 0.4

    x_train, y_train, x_test, y_test = Utils.create_dataset(input_type,
                                                            noise=noise)

    num_nodes = 50
    predictions_ = []
    best_error = 100
    best_node = -1
    errors = np.zeros(num_nodes)
    for i in np.arange(1, num_nodes, 1):

        mean = Utils.compute_rbf_centers(i)
        # mean = Utils.compute_rbf_centers_competitive_learning(x_train, i, eta=0.2, iterations=100,threshold=1)

        model = rbf_model(x_train,
                          y_train,
                          mean,
                          cov,
                          n_epochs,
                          i,
                          lr,
                          batch_train=batch_train)

        model.fit()

        predictions = model.forward_pass(x_test, True)
        error = model.evaluate(x_test, y_test, transform=True)
        errors[i] = error
        if error < best_error:
            best_error = error
            best_node = i
            predictions_ = predictions
        print("best error {0}, best node {1}".format(best_error, best_node))
    print("best error {0}, best node {1}".format(best_error, best_node))
    # Utils.plot_pred_actual(predictions_, y_test, '')
    Utils.plot_error_nodes(
        errors, num_nodes, ['error'],
        'seq noisy RBF , sin(2x) lr : {0}, sigma : {1}'.format(lr, cov))
コード例 #5
0
def run_rbf_expe(units=9,
                 noise=0,
                 lr=0,
                 epochs=500,
                 batch=True,
                 cov=0.3,
                 competitive=True,
                 threshold=0):
    input_type = 'sin'
    np.random.seed(123)
    num_hidden_units = units
    n_epochs = epochs
    batch_train = batch
    cov = cov

    x_train, y_train, x_test, y_test = Utils.create_dataset(input_type,
                                                            noise=noise)

    if competitive:
        mean = Utils.compute_rbf_centers_competitive_learning(
            x_train,
            num_hidden_units,
            eta=0.2,
            iterations=600,
            threshold=threshold)
    else:
        mean = Utils.compute_rbf_centers(num_hidden_units)

    model_competitive = rbf_model(x_train,
                                  y_train,
                                  mean,
                                  cov,
                                  n_epochs,
                                  num_hidden_units,
                                  lr,
                                  batch_train=batch_train)
    model_competitive.fit()

    predictions_competitive = model_competitive.forward_pass(x_test, True)
    error_competitive = model_competitive.evaluate(x_test,
                                                   y_test,
                                                   transform=True)
    return [predictions_competitive, error_competitive, mean]
コード例 #6
0
def experiment_batch_without_noise():
    input_type = 'sin'
    np.random.seed(123)
    lr = 0.2
    n_epochs = 300
    batch_train = True

    cov = 1

    x_train, y_train, x_test, y_test = Utils.create_dataset(input_type)

    predictions = []
    best_error = 100
    best_node = -1
    for i in np.arange(1, len(x_train), 1):

        mean = Utils.compute_rbf_centers(i)

        model = rbf_model(x_train,
                          y_train,
                          mean,
                          cov,
                          n_epochs,
                          i,
                          lr,
                          batch_train=batch_train)

        model.fit()

        predictions = model.forward_pass(x_test, True)
        error = model.evaluate(x_test, y_test, transform=True)

        if error < best_error:
            best_error = error
            best_node = i
            predictions = predictions
        print("number of hidden units: {0} test Error: {1}".format(i, error))

    print("best error {0}, best node {1}".format(best_error, best_node))
    Utils.plot_pred_actual(predictions, y_test, '')