コード例 #1
0
ファイル: rbm.py プロジェクト: JonasWechsler/NeuralNetsLab4
def run(train_data, test_data):
    batch_size = 10
    n_samples = np.array(train_data).shape[0]
    n_batches = int(np.ceil(float(n_samples) / batch_size))
    batch_slices = list(
        gen_even_slices(n_batches * batch_size, n_batches, n_samples))

    nodes = [50, 75, 100, 150]

    for item in nodes:
        errors = []
        model = BernoulliRBM(n_components=item,
                             learning_rate=0.1,
                             batch_size=10,
                             n_iter=1,
                             random_state=None,
                             verbose=1)
        for _ in range(20):
            for batch_slice in batch_slices:
                model.partial_fit(train_data[batch_slice])
            errors.append(percent_error(model.gibbs(test_data), test_data))
        plot.plot_points(errors)
        plot.plot_heatmap(reformat_data(test_data[0]))
        plot.plot_heatmap(reformat_data(model.gibbs(test_data)[0]))

        if item == 50 or item == 100:
            plot.plot_heatmap(model.__dict__['components_'].reshape(item, 784))
コード例 #2
0
def train_rbm_pcd(x_train, x_val, n_hidden, lr, inftype, n_iter=1000):
    assert n_iter > 100  # we checkpoint every 100 iterations
    rbm = BernoulliRBM(
        n_components=n_hidden,
        learning_rate=lr,
        batch_size=x_train.shape[0],
        n_iter=n_iter,
        verbose=0,
    )
    best_score, best_rbm = np.inf, None
    for it in range(n_iter):
        rbm.partial_fit(x_train)
        if (it + 1) % 20 == 0:  # checkpoint every 20
            score = test_rbm_pcd(
                x_val,
                rbm.components_,
                rbm.intercept_hidden_,
                rbm.intercept_visible_,
                inftype,
            )
            if score < best_score:
                best_score = score
                best_rbm = (
                    rbm.components_.copy(),
                    rbm.intercept_hidden_.copy(),
                    rbm.intercept_visible_.copy(),
                )
    return best_rbm, best_score
コード例 #3
0
ファイル: test_rbm.py プロジェクト: amitmse/scikit-learn
def test_small_sparse_partial_fit():
    for sparse in [csc_matrix, csr_matrix]:
        X_sparse = sparse(Xdigits[:100])
        X = Xdigits[:100].copy()

        rbm1 = BernoulliRBM(n_components=64, learning_rate=0.1, batch_size=10, random_state=9)
        rbm2 = BernoulliRBM(n_components=64, learning_rate=0.1, batch_size=10, random_state=9)

        rbm1.partial_fit(X_sparse)
        rbm2.partial_fit(X)

        assert_almost_equal(rbm1.score_samples(X).mean(), rbm2.score_samples(X).mean(), decimal=0)
コード例 #4
0
ファイル: test_rbm.py プロジェクト: amitmse/scikit-learn
def test_partial_fit():
    X = Xdigits.copy()
    rbm = BernoulliRBM(n_components=64, learning_rate=0.1, batch_size=20, random_state=9)
    n_samples = X.shape[0]
    n_batches = int(np.ceil(float(n_samples) / rbm.batch_size))
    batch_slices = np.array_split(X, n_batches)

    for i in range(7):
        for batch in batch_slices:
            rbm.partial_fit(batch)

    assert_almost_equal(rbm.score_samples(X).mean(), -21.0, decimal=0)
    assert_array_equal(X, Xdigits)
コード例 #5
0
ファイル: test_rbm.py プロジェクト: zlb12080220/scikit-learn
def test_partial_fit():
    X = Xdigits.copy()
    rbm = BernoulliRBM(n_components=64, learning_rate=0.1,
                       batch_size=20, random_state=9)
    n_samples = X.shape[0]
    n_batches = int(np.ceil(float(n_samples) / rbm.batch_size))
    batch_slices = np.array_split(X, n_batches)

    for i in range(7):
        for batch in batch_slices:
            rbm.partial_fit(batch)

    assert_almost_equal(rbm.score_samples(X).mean(), -21., decimal=0)
    assert_array_equal(X, Xdigits)
コード例 #6
0
ファイル: test_rbm.py プロジェクト: zlb12080220/scikit-learn
def test_small_sparse_partial_fit():
    for sparse in [csc_matrix, csr_matrix]:
        X_sparse = sparse(Xdigits[:100])
        X = Xdigits[:100].copy()

        rbm1 = BernoulliRBM(n_components=64, learning_rate=0.1,
                            batch_size=10, random_state=9)
        rbm2 = BernoulliRBM(n_components=64, learning_rate=0.1,
                            batch_size=10, random_state=9)

        rbm1.partial_fit(X_sparse)
        rbm2.partial_fit(X)

        assert_almost_equal(rbm1.score_samples(X).mean(),
                            rbm2.score_samples(X).mean(),
                            decimal=0)
コード例 #7
0
                    learning_rate=0.01,
                    verbose=1,
                    n_iter=30)
RBM2 = BernoulliRBM(n_components=100,
                    batch_size=10,
                    learning_rate=0.01,
                    verbose=1,
                    n_iter=30)

for i, rev_theta in enumerate(np.linspace(0.1, 1, 10)):
    theta = 1 - rev_theta
    print "Preentrenando modelo para theta=", theta
    print "Leyendo batch", i + 1
    Xtr_ns = load_single_NORB_train_val(".", i + 1, onlyx=True)
    Xtr_ns = scale_data(Xtr_ns)
    RBM1.partial_fit(Xtr_ns)
    Xtr_ns2 = RBM1.transform(Xtr_ns)
    print "..."
    Xtr_ns2 = scale_data(Xtr_ns2)
    RBM2.partial_fit(Xtr_ns2)
    del Xtr_ns, Xtr_ns2
    print "..."
    joblib.dump(RBM1, "2/RBM1_512_" + str(theta) + ".pkl")
    joblib.dump(RBM2, "2/RBM2_512_" + str(theta) + ".pkl")

# Entrenar usando RBM
accuracies = []
activation = 'tanh'

for i, theta in enumerate(np.linspace(0.1, 1, 10)):
    print "Analizando theta =", theta