CoolFace
Apppublic

jeevan0704/sequential-model-for-sequential_dataset

sourceHugging Faceupdated 7mo agoView on Hugging Face
0likes
main.py108 linesDownload Raw Back to root
1"""2Main script for end-to-end sequence labeling pipeline3"""4import torch5import pickle6import os7 8import config9from utils import set_seed, create_directories10from data_preprocessing import load_data, prepare_data, create_data_loaders11from model import create_model12from train import train_model13from evaluate import evaluate_model, save_results, show_sample_predictions14from visualize_results import visualize_all_results15 16 17def main():18    """Main execution pipeline"""19    print("\n" + "="*80)20    print("SEQUENCE LABELING MODEL - END-TO-END PIPELINE")21    print("="*80)22    23    # Set seed for reproducibility24    set_seed(config.RANDOM_SEED)25    print(f"Random seed set to: {config.RANDOM_SEED}")26    27    # Create directories28    create_directories([config.MODEL_DIR, config.RESULTS_DIR])29    30    # Step 1: Load and prepare data31    print("\n" + "="*80)32    print("STEP 1: DATA LOADING AND PREPROCESSING")33    print("="*80)34    35    data = load_data()36    train_dataset, val_dataset, test_dataset, stats = prepare_data(data)37    train_loader, val_loader, test_loader = create_data_loaders(38        train_dataset, val_dataset, test_dataset39    )40    41    vocab_size = stats['vocab_size']42    print(f"\nDataset prepared:")43    print(f"  Vocabulary size: {vocab_size}")44    print(f"  Train samples: {len(train_dataset)}")45    print(f"  Val samples: {len(val_dataset)}")46    print(f"  Test samples: {len(test_dataset)}")47    48    # Step 2: Train model49    print("\n" + "="*80)50    print("STEP 2: MODEL TRAINING")51    print("="*80)52    53    model, history = train_model(vocab_size, train_loader, val_loader, config.DEVICE)54    55    # Save training history56    history_path = os.path.join(config.RESULTS_DIR, 'training_history.pkl')57    with open(history_path, 'wb') as f:58        pickle.dump(history, f)59    print(f"\nTraining history saved to {history_path}")60    61    # Step 3: Evaluate model62    print("\n" + "="*80)63    print("STEP 3: MODEL EVALUATION")64    print("="*80)65    66    # Load best model67    from utils import load_checkpoint68    best_model_path = os.path.join(config.MODEL_DIR, 'best_model.pth')69    load_checkpoint(best_model_path, model)70    71    # Evaluate72    results = evaluate_model(model, test_loader, config.DEVICE)73    74    # Save results75    save_results(results, config.RESULTS_DIR)76    77    # Show sample predictions78    show_sample_predictions(model, test_dataset, config.DEVICE, num_samples=5)79    80    # Step 4: Visualize results81    print("\n" + "="*80)82    print("STEP 4: VISUALIZATION")83    print("="*80)84    85    visualize_all_results(86        history, 87        results['confusion_matrix'], 88        results['targets'],89        config.RESULTS_DIR90    )91    92    # Final summary93    print("\n" + "="*80)94    print("PIPELINE COMPLETED SUCCESSFULLY!")95    print("="*80)96    print(f"\nFinal Results:")97    print(f"  Test Accuracy: {results['metrics']['accuracy']:.4f}")98    print(f"  Test F1 (Macro): {results['metrics']['f1_macro']:.4f}")99    print(f"  Test F1 (Weighted): {results['metrics']['f1_weighted']:.4f}")100    print(f"\nOutputs saved to:")101    print(f"  Model: {config.MODEL_DIR}/best_model.pth")102    print(f"  Results: {config.RESULTS_DIR}/")103    print("="*80)104 105 106if __name__ == "__main__":107    main()108