def test_neural_forest_regressor():
    """
    This unit test checks the training and evaluating stage of
    NeuralForestClassifier.
    """
    epochs = 1
    n_estimators = 2
    depth = 3
    lamda = 1e-3

    model = NeuralForestRegressor(
        n_estimators=n_estimators,
        depth=depth,
        lamda=lamda,
        cuda=False,
        n_jobs=1,
    )

    model.set_optimizer("Adam", lr=1e-4, weight_decay=5e-4)

    # Prepare data
    train = TensorDataset(X_train, y_train_reg)
    train_loader = DataLoader(train, batch_size=2, shuffle=False)
    test = TensorDataset(X_test, y_test_reg)
    test_loader = DataLoader(test, batch_size=2, shuffle=False)

    # Train
    model.fit(train_loader, epochs=epochs, test_loader=test_loader)

    # Evaluate
    model.evaluate(test_loader)

    # Predict
    for _, (data, target) in enumerate(test_loader):
        model.predict(data)
        break

    # Reload
    new_model = NeuralForestRegressor(
        n_estimators=n_estimators,
        depth=depth,
        lamda=lamda,
        cuda=False,
        n_jobs=1,
    )
    io.load(new_model)

    new_model.evaluate(test_loader)

    for _, (data, target) in enumerate(test_loader):
        new_model.predict(data)
        break
コード例 #2
0
def test_clf_class(clf):
    """
    This unit test checks the training and evaluating stage of all classifiers.
    """
    epochs = 1
    n_estimators = 2

    model = clf(estimator=MLP_clf, n_estimators=n_estimators, cuda=False)

    # Optimizer
    model.set_optimizer("Adam", lr=1e-3, weight_decay=5e-4)

    # Scheduler (Snapshot Ensemble Excluded)
    if not isinstance(model, torchensemble.SnapshotEnsembleClassifier):
        model.set_scheduler("MultiStepLR", milestones=[2, 4])

    # Prepare data
    train = TensorDataset(X_train, y_train_clf)
    train_loader = DataLoader(train, batch_size=2, shuffle=False)
    test = TensorDataset(X_test, y_test_clf)
    test_loader = DataLoader(test, batch_size=2, shuffle=False)

    # Snapshot Ensemble needs more epochs
    if isinstance(model, torchensemble.SnapshotEnsembleClassifier):
        epochs = 6

    # Train
    ret = model.fit(train_loader, epochs=epochs, test_loader=test_loader)

    # Extra step for Fast Geometric Ensemble
    if isinstance(model, torchensemble.FastGeometricClassifier):
        model.ensemble(ret, train_loader, test_loader=test_loader)

    # Evaluate
    model.evaluate(test_loader)

    # Predict
    for _, (data, target) in enumerate(test_loader):
        model.predict(data)
        break

    # Reload
    new_model = clf(estimator=MLP_clf, n_estimators=n_estimators, cuda=False)
    io.load(new_model)

    new_model.evaluate(test_loader)

    for _, (data, target) in enumerate(test_loader):
        new_model.predict(data)
        break
def test_reg_object(reg):
    """
    This unit test checks the training and evaluating stage of all regressors.
    """
    epochs = 1
    n_estimators = 2

    model = reg(estimator=MLP_reg(), n_estimators=n_estimators, cuda=False)

    # Optimizer
    model.set_optimizer("Adam", lr=1e-3, weight_decay=5e-4)

    # Scheduler (Snapshot Ensemble Excluded)
    if not isinstance(model, torchensemble.SnapshotEnsembleRegressor):
        model.set_scheduler("MultiStepLR", milestones=[2, 4])

    # Prepare data with multiple inputs
    train = TensorDataset(X_train, X_train, y_train_reg)
    train_loader = DataLoader(train, batch_size=2, shuffle=False)
    test = TensorDataset(X_test, X_test, y_test_reg)
    test_loader = DataLoader(test, batch_size=2, shuffle=False)

    # Snapshot Ensemble needs more epochs
    if isinstance(model, torchensemble.SnapshotEnsembleRegressor):
        epochs = 6

    # Train
    model.fit(train_loader, epochs=epochs, test_loader=test_loader)

    # Evaluate
    model.evaluate(test_loader)

    # Predict
    for _, elem in enumerate(test_loader):
        data, target = io.split_data_target(elem, device)
        model.predict(*data)
        break

    # Reload
    new_model = reg(estimator=MLP_reg(), n_estimators=n_estimators, cuda=False)
    io.load(new_model)

    new_model.evaluate(test_loader)

    for _, elem in enumerate(test_loader):
        data, target = io.split_data_target(elem, device)
        new_model.predict(*data)
        break
コード例 #4
0
def test_clf_class(clf):
    """
    This unit test checks the training and evaluating stage of all classifiers.
    """
    epochs = 1
    n_estimators = 2

    model = clf(estimator=MLP_clf, n_estimators=n_estimators, cuda=False)

    # Optimizer
    model.set_optimizer("Adam", lr=1e-3, weight_decay=5e-4)

    # Scheduler (Snapshot Ensemble Excluded)
    if not isinstance(model, torchensemble.SnapshotEnsembleClassifier):
        model.set_scheduler("MultiStepLR", milestones=[2, 4])

    # Prepare data
    train = TensorDataset(X_train, y_train_clf)
    train_loader = DataLoader(train, batch_size=2, shuffle=False)
    test = TensorDataset(X_test, y_test_clf)
    test_loader = DataLoader(test, batch_size=2, shuffle=False)

    # Snapshot ensemble needs more epochs
    if isinstance(model, torchensemble.SnapshotEnsembleClassifier):
        epochs = 6

    # Train
    model.fit(train_loader,
              epochs=epochs,
              test_loader=test_loader,
              save_model=True)

    # Test
    prev_acc = model.predict(test_loader)

    # Reload
    new_model = clf(estimator=MLP_clf, n_estimators=n_estimators, cuda=False)
    io.load(new_model)

    post_acc = new_model.predict(test_loader)

    assert prev_acc == post_acc  # ensure the same performance
コード例 #5
0
def test_reg_object(reg):
    """
    This unit test checks the training and evaluating stage of all regressors.
    """
    epochs = 1
    n_estimators = 2

    model = reg(estimator=MLP_reg(), n_estimators=n_estimators, cuda=False)

    # Optimizer
    model.set_optimizer("Adam", lr=1e-3, weight_decay=5e-4)

    # Scheduler (Snapshot Ensemble Excluded)
    if not isinstance(model, torchensemble.SnapshotEnsembleRegressor):
        model.set_scheduler("MultiStepLR", milestones=[2, 4])

    # Prepare data
    train = TensorDataset(X_train, y_train_reg)
    train_loader = DataLoader(train, batch_size=2, shuffle=False)
    test = TensorDataset(X_test, y_test_reg)
    test_loader = DataLoader(test, batch_size=2, shuffle=False)

    # Snapshot ensemble needs more epochs
    if isinstance(model, torchensemble.SnapshotEnsembleRegressor):
        epochs = 6

    # Train
    ret = model.fit(train_loader, epochs=epochs, test_loader=test_loader)

    # Extra step for Fast Geometric Ensemble
    if isinstance(model, torchensemble.FastGeometricRegressor):
        model.ensemble(ret, train_loader, test_loader=test_loader)

    # Test
    model.predict(test_loader)

    # Reload
    new_model = reg(estimator=MLP_reg(), n_estimators=n_estimators, cuda=False)
    io.load(new_model)

    new_model.predict(test_loader)