Esempio n. 1
0
def test_model_set_model_method():
    model = Model()
    model.set_model(pytorch_model)
    model.compile(optimizer=Adam(), loss_function=MSELoss())

    with pytest.raises(ValueError):
        model = Model()
        model.set_model(None)
Esempio n. 2
0
def test_model():
    with pytest.raises(ValueError):
        Model(force_cpu="test")

    with pytest.raises(ValueError):
        Model(training_device="test")

    with pytest.raises(ValueError):
        Model(random_state="test")

    training_device = device("cpu")

    Model(force_cpu=False, training_device=training_device, random_state=1969)
    Model(force_cpu=False, training_device=None, random_state=1969)
    Model(force_cpu=True, training_device=None, random_state=1969)
Esempio n. 3
0
def test_model_fit_method():
    model = Model()
    model.set_model(pytorch_model)
    model.compile(optimizer=Adam(), loss_function=MSELoss())
    logger = TrainLogger("ignore/")

    model.fit(
        train_data=(X_train, y_train),
        validation_data=(X_validation, y_validation),
        epochs=1,
        batch_size=32,
    )

    model.fit(
        train_data=(X_train, y_train),
        validation_data=(X_validation, y_validation),
        epochs=1,
        batch_size=32,
        callbacks=[logger],
    )

    train_gen = train_generator()
    validation_gen = train_generator()

    model.fit(
        train_data=train_gen,
        validation_data=validation_gen,
        epochs=1,
        batch_size=4,
        steps_per_epoch=5,
        validation_steps=5,
    )

    model.fit(
        train_data=train_gen,
        validation_data=validation_gen,
        epochs=1,
        batch_size=4,
        steps_per_epoch=5,
        validation_steps=5,
        callbacks=[logger],
    )

    with pytest.raises(ValueError):
        model.fit(
            train_data=(X_train, y_train),
            validation_data=(X_validation, y_validation),
            epochs=1,
            batch_size=1024,
        )

    with pytest.raises(ValueError):
        model.fit(
            train_data=(X_train, y_train[:-1]),
            validation_data=(X_validation, y_validation),
            epochs=-20,
            batch_size=1024,
        )

    with pytest.raises(ValueError):
        model.fit(
            train_data=(X_train, y_train[:-1]),
            validation_data=(X_validation, y_validation),
            epochs=1,
            batch_size=-10,
        )

    with pytest.raises(ValueError):
        model.fit(
            train_data=(X_train, y_train[:-1]),
            validation_data=(X_validation, y_validation),
            epochs=1,
            batch_size=32,
            callbacks="test",
        )

    with pytest.raises(ValueError):
        train_gen = train_generator()
        validation_gen = train_generator()

        model.fit(
            train_data=train_gen,
            validation_data=validation_gen,
            epochs=1,
            batch_size=32,
            steps_per_epoch=-123,
            validation_steps=5,
        )

    with pytest.raises(ValueError):
        train_gen = train_generator()
        validation_gen = train_generator()

        model.fit(
            train_data=train_gen,
            validation_data=validation_gen,
            epochs=1,
            batch_size=32,
            steps_per_epoch="test",
            validation_steps=5,
        )

    with pytest.raises(ValueError):
        train_gen = train_generator()
        validation_gen = train_generator()

        model.fit(
            train_data=train_gen,
            validation_data=validation_gen,
            epochs=1,
            batch_size=32,
            steps_per_epoch=5,
            validation_steps=-23,
        )

    with pytest.raises(ValueError):
        train_gen = train_generator()
        validation_gen = train_generator()

        model.fit(
            train_data=train_gen,
            validation_data=validation_gen,
            epochs=1,
            batch_size=32,
            steps_per_epoch=5,
            validation_steps="asd",
        )
Esempio n. 4
0
def test_models_compile_method():
    model = Model()
    model.set_model(pytorch_model)
    model.compile(optimizer=Adam(), loss_function=MSELoss())

    with pytest.raises(ValueError):
        model = Model()
        model.set_model(pytorch_model)

        model.compile(optimizer=Adam(),
                      loss_function=MSELoss(),
                      metrics=["test"])

    with pytest.raises(ValueError):
        model = Model()
        model.set_model(pytorch_model)

        model.compile(optimizer=Adam(),
                      loss_function=MSELoss(),
                      metrics="test")
Esempio n. 5
0
def test_model_load_for_inference_method():
    model = Model()
    model.set_model(pytorch_model)
    model.compile(optimizer=Adam(), loss_function=MSELoss())

    with pytest.raises(ValueError):
        model.load_for_inference(123)

    with pytest.raises(ValueError):
        model.load_for_inference("")

    model.load_for_inference("ignore/test.npy")

    with pytest.raises(ValueError):
        model = Model()
        model.load_for_inference("ignore/test.npy")
Esempio n. 6
0
def test_model_summary_method():
    model = Model()
    model.set_model(pytorch_model)
    model.compile(optimizer=Adam(), loss_function=MSELoss())

    model.summary()

    with pytest.raises(Exception):
        model = Model()
        model.summary()
Esempio n. 7
0
def test_model_evaluate_method():
    model = Model()
    model.set_model(pytorch_model)
    model.compile(optimizer=Adam(), loss_function=MSELoss())
    TrainLogger("ignore/")
    test_gen = train_generator()

    model.fit(
        train_data=(X_train, y_train),
        validation_data=(X_validation, y_validation),
        epochs=1,
        batch_size=32,
    )

    model.evaluate(test_data=(X_test, y_test))
    model.evaluate(test_data=(X_test, y_test), batch_size=4)

    model.evaluate(test_data=test_gen, batch_size=4, tests_steps=4)

    with pytest.raises(ValueError):
        model.evaluate(test_data=(X_test, y_test), batch_size=400)
X_train = X[0:int(len(X)*train_data_size)]
y_train = y[0:int(len(y)*train_data_size)]

X_validation = X[int(len(X)*train_data_size):]
y_validation = y[int(len(y)*train_data_size):]

print("Size of Train data is", len(X_train))
print("Size of Validation data is ", len(X_validation))
print("Size of Test data is ", len(X_test))

# Making the model
# Initializing the PyTorch model
p_model = MNISTModel()

# Initializing a NeuralPy model
model = Model()

# Converting the PyTorch model to NeuralPy model
model.set_model(p_model)

# Printing the summary of the model
print(model.summary())

# Compiling the model
model.compile(optimizer=Adam(), loss_function=CrossEntropyLoss(), metrics=["accuracy"])

# Training the model
# Using the fit method
history = model.fit(train_data=(X_train, y_train), test_data=(X_validation, y_validation), epochs=10, batch_size=32)

# Evaluating the model