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
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
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
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)