This commit is contained in:
Jan Kowalczyk
2025-09-10 19:41:00 +02:00
parent ef0c36eed5
commit cf15d5501e
17 changed files with 1198 additions and 720 deletions

View File

@@ -21,6 +21,7 @@ def load_dataset(
k_fold_num: int = None,
num_known_normal: int = 0,
num_known_outlier: int = 0,
split: float = 0.7,
):
"""Loads the dataset."""
@@ -49,6 +50,7 @@ def load_dataset(
k_fold_num=k_fold_num,
num_known_normal=num_known_normal,
num_known_outlier=num_known_outlier,
split=split,
)
if dataset_name == "subtersplit":

View File

@@ -152,6 +152,12 @@ from utils.visualization.plot_images_grid import plot_images_grid
default=0.001,
help="Initial learning rate for Deep SAD network training. Default=0.001",
)
@click.option(
"--train_test_split",
type=float,
default=0.7,
help="Ratio of training data in the train-test split (default: 0.7).",
)
@click.option("--n_epochs", type=int, default=50, help="Number of epochs to train.")
@click.option(
"--lr_milestone",
@@ -307,6 +313,7 @@ def main(
seed,
optimizer_name,
lr,
train_test_split,
n_epochs,
lr_milestone,
batch_size,
@@ -416,6 +423,7 @@ def main(
k_fold_num=k_fold_num,
num_known_normal=num_known_normal,
num_known_outlier=num_known_outlier,
split=train_test_split,
)
# Log random sample of known anomaly classes if more than 1 class
if n_known_outlier_classes > 1:
@@ -694,6 +702,7 @@ def main(
ratio_pollution,
random_state=np.random.RandomState(cfg.settings["seed"]),
k_fold_num=k_fold_num,
split=train_test_split,
)
# Set up k-fold passes
@@ -804,12 +813,14 @@ def main(
k_fold_num=cfg.settings["k_fold_num"],
num_known_normal=cfg.settings["num_known_normal"],
num_known_outlier=cfg.settings["num_known_outlier"],
split=train_test_split,
)
train_passes = (
range(cfg.settings["k_fold_num"]) if cfg.settings["k_fold"] else [None]
)
retest_autoencoder = False
retest_isoforest = True
retest_ocsvm = True
retest_deepsad = True
@@ -865,6 +876,25 @@ def main(
k_fold_idx=fold_idx,
)
if retest_autoencoder:
# Initialize DeepSAD model and set neural network phi
deepSAD = DeepSAD(cfg.settings["latent_space_dim"], cfg.settings["eta"])
deepSAD.set_network(cfg.settings["net_name"])
deepSAD.load_model(
model_path=ae_model_path, load_ae=True, map_location=device
)
logger.info("Loading model from %s." % load_model)
# Save pretraining results
if fold_idx is None:
deepSAD.save_ae_results(
export_pkl=load_model / "results_ae_retest.pkl"
)
else:
deepSAD.save_ae_results(
export_pkl=load_model / f"results_ae_retest_{fold_idx}.pkl"
)
del deepSAD
# Initialize DeepSAD model and set neural network phi
if retest_deepsad:
deepSAD = DeepSAD(cfg.settings["latent_space_dim"], cfg.settings["eta"])