<commit_before>import pytest
from distutils.version import LooseVersion
from numpy.testing import assert_equal

from dipy.utils.optpkg import optional_package

tf, have_tf, _ = optional_package('tensorflow')

if have_tf:
    if LooseVersion(tf.__version__) < LooseVersion('2.0.0'):
        raise ImportError('Please upgrade to TensorFlow 2+')

    from dipy.nn.model import SingleLayerPerceptron


@pytest.mark.skipif(not have_tf, reason='Requires TensorFlow')
def test_default_mnist_sequential():

    mnist = tf.keras.datasets.mnist

    epochs = 1

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    model = tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28, 28)),
        tf.keras.layers.Dense(128, activation='relu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(10, activation='softmax')
        ])

    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])

    hist = model.fit(x_train, y_train, epochs=epochs)
    model.evaluate(x_test, y_test, verbose=2)
    accuracy = hist.history['accuracy'][0]
    assert_equal(accuracy > 0.9, True)


@pytest.mark.skipif(not have_tf, reason='Requires TensorFlow')
def test_default_mnist_slp():

    mnist = tf.keras.datasets.mnist
    epochs = 1

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    slp = SingleLayerPerceptron(input_shape=(28, 28))
    hist = slp.fit(x_train, y_train, epochs=epochs)
    slp.evaluate(x_test, y_test, verbose=2)
    x_test_prob = slp.predict(x_test)

    accuracy = hist.history['accuracy'][0]
    assert_equal(slp.accuracy > 0.9, True)
    assert_equal(slp.accuracy, accuracy)
    assert_equal(slp.loss < 0.4, True)
    assert_equal(x_test_prob.shape, (10000, 10))


if __name__ == "__main__":
    test_default_mnist_sequential()
    test_default_mnist_slp()<commit_msg>test for multilayer perecepton<commit_after>import pytest
from distutils.version import LooseVersion
from numpy.testing import assert_equal

from dipy.utils.optpkg import optional_package

tf, have_tf, _ = optional_package('tensorflow')

if have_tf:
    if LooseVersion(tf.__version__) < LooseVersion('2.0.0'):
        raise ImportError('Please upgrade to TensorFlow 2+')

    from dipy.nn.model import MultipleLayerPercepton


@pytest.mark.skipif(not have_tf, reason='Requires TensorFlow')
def test_default_mnist_sequential():

    mnist = tf.keras.datasets.mnist

    epochs = 1

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    model = tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28, 28)),
        tf.keras.layers.Dense(128, activation='relu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(10, activation='softmax')
        ])

    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])

    hist = model.fit(x_train, y_train, epochs=epochs)
    model.evaluate(x_test, y_test, verbose=2)
    accuracy = hist.history['accuracy'][0]
    assert_equal(accuracy > 0.9, True)


@pytest.mark.skipif(not have_tf, reason='Requires TensorFlow')
def test_default_mnist_mlp():

    mnist = tf.keras.datasets.mnist
    epochs = 1

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    mlp = MultipleLayerPercepton(input_shape=(28, 28))
    hist = mlp.fit(x_train, y_train, epochs=epochs)
    mlp.evaluate(x_test, y_test, verbose=2)
    x_test_prob = mlp.predict(x_test)

    accuracy = hist.history['accuracy'][0]
    assert_equal(mlp.accuracy > 0.9, True)
    assert_equal(.accuracy, accuracy)
    assert_equal(mlp.loss < 0.4, True)
    assert_equal(x_test_prob.shape, (10000, 10))

@pytest.mark.skipif(not have_tf, reason='Requires TensorFlow')
def test_default_mnist_mlp_2():

    mnist = tf.keras.datasets.mnist
    pochs = 1

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    mlp = MultipleLayerPercepton(input_shape=(28, 28),num_hidden=[128,128])
    hist = mlp.fit(x_train, y_train, epochs=epochs)
    mlp.evaluate(x_test, y_test, verbose=2)
    x_test_prob = mlp.predict(x_test)

    accuracy = hist.history['accuracy'][0]
    assert_equal(mlp.accuracy > 0.9, True)
    assert_equal(.accuracy, accuracy)
    assert_equal(mlp.loss < 0.4, True)
    assert_equal(x_test_prob.shape, (10000, 10))



if __name__ == "__main__":
    test_default_mnist_sequential()
    test_default_mnist_mlp()
    test_default_mnist_mlp_2()
{'fraction_non_alphanumeric': 0.12654774396642182, 'fraction_numerical': 0.029800629590766, 'mean_word_length': 3.780341023069208, 'pattern_counts': {'":': 2, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1969306', 'n_tokens_mistral': 1897, 'n_tokens_neox': 1770, 'n_words': 305}