| """Re-save models with importable AutoencoderWrapper.""" | |
| import os, sys | |
| sys.path.insert(0, '/app/fraud_detection') | |
| import joblib | |
| import torch | |
| from ae_model import Autoencoder, AutoencoderWrapper | |
| from config import MODELS_DIR, DATA_DIR | |
| # Load non-AE models | |
| models = joblib.load(os.path.join(MODELS_DIR, "all_models.joblib")) | |
| print(f"Loaded models: {list(models.keys())}") | |
| # Rebuild autoencoder | |
| data = joblib.load(os.path.join(DATA_DIR, "processed_data.joblib")) | |
| input_dim = data['X_train'].shape[1] | |
| ae = Autoencoder(input_dim) | |
| ae.load_state_dict(torch.load(os.path.join(MODELS_DIR, "autoencoder.pt"), weights_only=True)) | |
| ae.eval() | |
| models['Autoencoder'] = AutoencoderWrapper(ae) | |
| # Save | |
| joblib.dump(models, os.path.join(MODELS_DIR, "all_models_with_ae.joblib")) | |
| print(f"Saved {len(models)} models with AE wrapper") | |
| print(f"Models: {list(models.keys())}") | |