EmoMusicCommNet
收藏资源简介:
EmoMusicCommNet: Emotion-Aware Music Modeling for Cultural Communication A deep learning framework that jointly models musical emotion and cultural context using multi-modal encoding, cross-attention fusion, and adaptive regularization. 📘 Overview EmoMusicCommNet links emotional expression in music with cultural perception.It combines a bi-RNN emotion encoder, cultural embeddings, emotion-specific cross-attention, and an adaptive cultural regularizer to support cross-cultural music understanding, emotion-aware recommendation, and personalized cultural communication. Core modules Emotion Encoder (EAMCN): Bi-GRU/LSTM over frame-level music features EDCCS / ESAM: Emotion-specific attention that conditions on cultural embeddings ARCS: Adaptive regularization for cultural specificity and generalization Task Head: Classification (emotion labels) or regression (valence/arousal, etc.) 🚀 Features Multi-modal fusion of music sequence + cultural context Emotion-driven cross-attention for interpretable alignment Adaptive regularization to balance universality vs. cultural specificity Drop-in classification or regression head Clean PyTorch implementation with config-driven training 🧱 Repository Structure bash EmoMusicCommNet/ │ ├── src/ │ ├── models/ │ │ └── emomusiccommnet.py # Model (EAMCN + EDCCS/ESAM + ARCS) │ ├── data.py # Dataset loading & preprocessing │ ├── train.py # Training / evaluation script │ └── utils.py # Metrics, logging, helpers │ ├── configs/ │ └── config.yaml # Hyperparameters & paths │ ├── data/ │ └── sample_data.csv # Example dataset (optional) │ ├── results/ │ ├── logs/ # Train/eval logs │ └── checkpoints/ # Saved models │ ├── requirements.txt └── README.md ⚙️ Installation bash # Clone git clone https://github.com/yourusername/EmoMusicCommNet.git cd EmoMusicCommNet # (Optional) Create a virtual environment python -m venv .venv # Linux/Mac source .venv/bin/activate # Windows .venv\Scripts\activate # Install dependencies pip install -r requirements.txt 📦 Data Format You can store samples as CSV or JSON. A minimal row format: field type description music_seq JSON array [[f1,..,fF], ..., [f1,..,fF]] T×F features culture_id int Optional categorical culture index culture_vec JSON array Optional continuous culture/context features label int/float Class index (clf) or target value (reg) Tip: Normalize music features per track; pad/truncate sequences to a fixed length during preprocessing (handled in data.py). 🔧 Configuration (example: configs/config.yaml) yaml task: classification # or: regression num_classes: 7 model: music_feat_dim: 96 culture_vec_dim: 24 num_cultures: 8 culture_emb_dim: 32 d_model: 128 rnn_type: gru # gru | lstm rnn_layers: 2 n_heads: 4 dropout: 0.1 train: batch_size: 32 epochs: 50 lr: 3e-4 weight_decay: 1e-4 seed: 42 data: train_path: data/train.csv val_path: data/val.csv test_path: data/test.csv max_len: 120 ▶️ Usage Train: bash python src/train.py --config configs/config.yaml Evaluate: bash python src/train.py --config configs/config.yaml --mode eval Predict (single file or folder): bash python src/train.py --config configs/config.yaml --mode predict --input data/infer.csv --output results/preds.csv 🧪 Metrics Classification: Accuracy, F1, AUC Regression: MAE, MSE, PCC/SRCC Cultural alignment (optional): prototype variance / cluster cohesion 📝 Model Notes Model file: src/models/emomusiccommnet.py Key losses you may combine in training: Primary task loss (CrossEntropy or MSE) Optional ARCS terms (intra-culture attraction, inter-culture diversity) Example (pseudocode): python y_hat, aux = model(music_seq, culture_id, culture_vec, return_aux=True) loss = task_loss(y_hat, y) loss += aux.get('loss_arcs_intra', 0.) + aux.get('loss_arcs_inter', 0.) 📚 Citation If this repository helps your research, please cite: css @article{emomusiccommnet2025, title = {EmoMusicCommNet: Emotion-Aware Music Modeling for Cultural Communication Contexts}, year = {2025}, journal = {TBD}, author = {Your Name} } 📄 License Released under the MIT License. See LICENSE for details. 🤝 Contributing Pull requests are welcome! Please open an issue for major changes and discuss your ideas first. 📬 Contact Maintainer: Your Name Email: your.email@example.com



