Skip to content

rohanMB357/neural-network-project

Repository files navigation

<<<<<<< HEAD

Unsupervised Neural Network for Multi-Genre Music Generation

This repository implements all four assignment tasks for CSE425/EEE474:

  1. Task 1: LSTM Autoencoder
  2. Task 2: Variational Autoencoder (VAE)
  3. Task 3: Transformer Decoder (autoregressive)
  4. Task 4: RLHF-style preference tuning (policy gradient with human or simulated rewards)

Project Structure

  • data/raw_midi/: raw MIDI files grouped by genre subfolders
  • data/processed/: tokenized sequences and vocabulary
  • data/train_test_split/: optional split metadata
  • src/preprocessing/: parsing, tokenization, piano-roll conversion
  • src/models/: AE, VAE, Transformer, optional diffusion placeholder
  • src/training/: training entrypoints for each task
  • src/evaluation/: metrics and comparisons
  • src/generation/: sequence sampling and MIDI export
  • outputs/generated_midis/: generated samples
  • outputs/plots/: loss/perplexity plots
  • outputs/survey_results/: human feedback CSV and summaries

Setup

pip install -r requirements.txt

Data Format

Place MIDI files inside genre folders:

data/raw_midi/
  classical/*.mid
  jazz/*.mid
  rock/*.mid
  pop/*.mid
  electronic/*.mid

End-to-End Workflow

  1. Preprocess and tokenize MIDI files
python -m src.preprocessing.midi_parser --input data/raw_midi --output data/processed
  1. Train Task 1 (LSTM Autoencoder)
python -m src.training.train_ae --data data/processed/sequences.npz --out outputs
  1. Train Task 2 (VAE)
python -m src.training.train_vae --data data/processed/sequences.npz --out outputs
  1. Train Task 3 (Transformer)
python -m src.training.train_transformer --data data/processed/sequences.npz --out outputs
  1. Run Task 4 (RLHF fine-tuning)
python -m src.training.train_rlhf --model-checkpoint outputs/checkpoints/transformer.pt --data data/processed/sequences.npz --out outputs
  1. Evaluate
python -m src.evaluation.metrics --real data/processed/sequences.npz --generated outputs/generated_tokens.npz --out outputs
  1. Export generated tokens to MIDI
python -m src.generation.generate_music --checkpoint outputs/checkpoints/transformer.pt --vocab data/processed/vocab.json --out outputs/generated_midis

Baselines

  • Random note generator: src/evaluation/metrics.py (random_baseline)
  • Markov chain baseline: notebooks/baseline_markov.ipynb and utility in src/generation/sample_latent.py

Notes

  • Task 4 supports both real human scores (CSV) and a simulated reward function for debugging.
  • Replace simulated rewards with survey results to complete final deliverables. =======

cse425

b207f2421144af4e5effb0d93a442703bf18aed7

About

Neural Network project for classification and prediction tasks using machine learning techniques

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors