Пример #1
0
def test_weights():
    input_dimensions = 4
    number_of_nodes = 9
    model = LinearAssociator(input_dimensions=input_dimensions,
                             number_of_nodes=number_of_nodes,
                             transfer_function="Hard_limit")
    weights = model.get_weights()
    assert weights.ndim == 2 and \
           weights.shape[0] == number_of_nodes and \
           weights.shape[1] == (input_dimensions)
    model.set_weights(np.ones((number_of_nodes, input_dimensions)))
    weights = model.get_weights()
    assert weights.ndim == 2 and \
           weights.shape[0] == number_of_nodes and \
           weights.shape[1] == (input_dimensions)
    assert np.array_equal(model.get_weights(),
                          np.ones((number_of_nodes, input_dimensions)))
    model.initialize_weights(seed=3)
    weights = np.array([[1.78862847, 0.43650985, 0.09649747, -1.8634927],
                        [-0.2773882, -0.35475898, -0.08274148, -0.62700068],
                        [-0.04381817, -0.47721803, -1.31386475, 0.88462238],
                        [0.88131804, 1.70957306, 0.05003364, -0.40467741],
                        [-0.54535995, -1.54647732, 0.98236743, -1.10106763],
                        [-1.18504653, -0.2056499, 1.48614836, 0.23671627],
                        [-1.02378514, -0.7129932, 0.62524497, -0.16051336],
                        [-0.76883635, -0.23003072, 0.74505627, 1.97611078],
                        [-1.24412333, -0.62641691, -0.80376609, -2.41908317]])
    np.testing.assert_array_almost_equal(model.get_weights(),
                                         weights,
                                         decimal=3)
Пример #2
0
def test_train_hardlim_delta():
    input_dimensions = 5
    number_of_nodes = 5
    for i in range(10):
        model = LinearAssociator(input_dimensions=input_dimensions, number_of_nodes=number_of_nodes,
                        transfer_function="Hard_limit")
        model.initialize_weights(seed=i + 1)
        X_train = np.random.randn(input_dimensions, 100)
        out = model.predict(X_train)
        model.set_weights(np.random.randn(*model.get_weights().shape))
        model.train(X_train, out, batch_size=10, num_epochs=200, alpha=0.1, gamma=0.1, learning="Delta")
        new_out = model.predict(X_train)
        np.testing.assert_array_almost_equal(out, new_out, decimal=4)
Пример #3
0
def test_pseudo_inverse_fit():
    input_dimensions = 5
    number_of_nodes = 5
    model = LinearAssociator(input_dimensions=input_dimensions, number_of_nodes=number_of_nodes,
                    transfer_function="Linear")
    model.initialize_weights(seed=1)
    X_train = np.random.randn(input_dimensions, 10)
    out = model.predict(X_train)

    model.set_weights(np.zeros_like(model.get_weights()))
    model.fit_pseudo_inverse(X_train, out)
    new_out = model.predict(X_train)
    np.testing.assert_array_almost_equal(out, new_out, decimal=4)