Beispiel #1
0
def run():
    (train_images, train_labels),\
    (tests_images, tests_labels) = load_data_subset(N_train, N_tests)
    parser, pred_fun, nllfun, frac_err = make_nn_funs(layer_sizes)
    N_param = len(parser.vect)

    print "Running experiment..."
    results = defaultdict(list)
    for i in xrange(N_samples):
        x_init_scale = np.full(N_param, init_scale)

        def indexed_loss_fun(w, i_iter):
            rs = RandomState((seed, i, i_iter))
            idxs = rs.randint(N_train, size=batch_size)
            nll = nllfun(w, train_images[idxs], train_labels[idxs]) * N_train
            nlp = neg_log_prior(w)
            return nll + nlp

        gradfun = grad(indexed_loss_fun)

        def callback(x, t, v, entropy):
            results[("entropy", i)].append(entropy / N_train)
            results[("v_norm", i)].append(norm(v) / np.sqrt(N_param))
            results[("minibatch_likelihood",
                     i)].append(-indexed_loss_fun(x, t))
            results[("log_prior_per_dpt",
                     i)].append(-neg_log_prior(x) / N_train)
            if t % thin != 0 and t != N_iter and t != 0: return
            results[('iterations', i)].append(t)
            results[("train_likelihood",
                     i)].append(-nllfun(x, train_images, train_labels))
            results[("tests_likelihood",
                     i)].append(-nllfun(x, tests_images, tests_labels))
            results[("tests_error",
                     i)].append(frac_err(x, tests_images, tests_labels))
            print "Iteration {0:5} Train likelihood {1:2.4f}  Test likelihood {2:2.4f}" \
                  "  Test Err {3:2.4f}".format(t, results[("train_likelihood", i)][-1],
                                                  results[("tests_likelihood", i)][-1],
                                                  results[("tests_error",      i)][-1])

        rs = RandomState((seed, i))
        entropic_descent_deterministic(gradfun,
                                       callback=callback,
                                       x_scale=x_init_scale,
                                       epsilon=epsilon,
                                       gamma=gamma,
                                       alpha=alpha,
                                       annealing_schedule=annealing_schedule,
                                       rs=rs)
    return results
def run():
    x_init_scale = np.full(D, init_scale)
    # annealing_schedule = np.linspace(0,1,N_iter)
    annealing_schedule = np.concatenate((np.zeros(N_iter / 3), np.linspace(0, 1, N_iter / 3), np.ones(N_iter / 3)))
    print "Running experiment..."
    results = defaultdict(list)
    for i in xrange(N_samples):

        def callback(x, t, v, entropy):
            # results[("x", i)].append(x.copy())    # Replace this with a loop over kwargs?
            results[("entropy", i)].append(entropy)
            # results[("velocity", i)].append(v)
            results[("likelihood", i)].append(-nllfun(x))

        rs = RandomState((seed, i))
        x, entropy = entropic_descent_deterministic(
            gradfun,
            callback=callback,
            x_scale=x_init_scale,
            epsilon=epsilon,
            gamma=gamma,
            alpha=alpha,
            annealing_schedule=annealing_schedule,
            rs=rs,
            scale_calc_method="exact_hessian",
            hessian=0.5,
        )
    return results
def run():
    (train_images, train_labels),\
    (tests_images, tests_labels) = load_data_subset(N_train, N_tests)
    parser, pred_fun, nllfun, frac_err = make_nn_funs(layer_sizes)
    N_param = len(parser.vect)

    print "Running experiment..."
    results = defaultdict(list)
    for i in xrange(N_samples):
        x_init_scale = np.full(N_param, init_scale)

        def indexed_loss_fun(w, i_iter):
            rs = RandomState((seed, i, i_iter))
            idxs = rs.randint(N_train, size=batch_size)
            nll = nllfun(w, train_images[idxs], train_labels[idxs]) * N_train
            nlp = neg_log_prior(w)
            return nll + nlp
        gradfun = grad(indexed_loss_fun)

        def callback(x, t, v, entropy):
            results[("entropy", i)].append(entropy / N_train)
            results[("v_norm", i)].append(norm(v) / np.sqrt(N_param))
            results[("minibatch_likelihood", i)].append(-indexed_loss_fun(x, t))
            results[("log_prior_per_dpt", i)].append(-neg_log_prior(x) / N_train)
            if t % thin != 0 and t != N_iter and t != 0: return
            results[('iterations', i)].append(t)
            results[("train_likelihood", i)].append(-nllfun(x, train_images, train_labels))
            results[("tests_likelihood", i)].append(-nllfun(x, tests_images, tests_labels))
            results[("tests_error", i)].append(frac_err(x, tests_images, tests_labels))
            print "Iteration {0:5} Train likelihood {1:2.4f}  Test likelihood {2:2.4f}" \
                  "  Test Err {3:2.4f}".format(t, results[("train_likelihood", i)][-1],
                                                  results[("tests_likelihood", i)][-1],
                                                  results[("tests_error",      i)][-1])
        rs = RandomState((seed, i))
        entropic_descent_deterministic(gradfun, callback=callback, x_scale=x_init_scale,
                          epsilon=epsilon, gamma=gamma, alpha=alpha,
                          annealing_schedule=annealing_schedule, rs=rs)
    return results
Beispiel #4
0
def run():
    x_init_scale = np.full(D, init_scale)
    # annealing_schedule = np.linspace(0,1,N_iter)
    annealing_schedule = np.concatenate((np.zeros(N_iter/3),
                                         np.linspace(0, 1, N_iter/3),
                                         np.ones(N_iter/3)))
    print "Running experiment..."
    results = defaultdict(list)
    for i in xrange(N_samples):
        def callback(x, t, v, entropy):
            #results[("x", i)].append(x.copy())    # Replace this with a loop over kwargs?
            results[("entropy", i)].append(entropy)
            #results[("velocity", i)].append(v)
            results[("likelihood", i)].append(-nllfun(x))

        rs = RandomState((seed, i))
        x, entropy = entropic_descent_deterministic(
            gradfun, callback=callback, x_scale=x_init_scale,
            epsilon=epsilon, gamma=gamma, alpha=alpha,
            annealing_schedule=annealing_schedule, rs=rs,
            scale_calc_method='exact_hessian', hessian=0.5)
    return results