# Saving and Using Saved Models

#### 2026-03-03

## Saving a trained CISS-VAE model

    library(reticulate)
    library(rCISSVAE)

    # Train a model
    res <- run_cissvae(data)

    # Save the trained model to disk
    save_cissvae_model(res$model, "trained_vae.pt")

    # IMPORTANT
    # The Python environment must be active so 'torch' can be imported.

## Loading a saved model and imputing data

    library(rCISSVAE)
    library(reticulate)

    ## Activate your Python environment
    reticulate::use_virtualenv("cissvae_environment", required = TRUE)

    ## Load full model object
    model <- load_cissvae_model(
      file = "trained_vae.pt"
    )

    ## Perform imputation on new data
    # Make sure your `data` has valid NAs and `clusters` vector is ready
    imputed_df <- impute_with_cissvae(
      model_py = model,
      data = data,
      index_col = "index",
      columns_ignore = NULL,
      clusters = clusters,
      imputable_matrix = NULL,
      binary_feature_mask = NULL,
      val_proportion = 0.1,
      replacement_value = 0,
      batch_size = 4000L,
      seed = 42
    )

    # `imputed_df` is returned to R as a data.frame

If you have binary variables in your dataset, make sure to define the binary_feature_mask and convert the probabilities for the binary variables into {0, 1} values using desired thresholding.