wing-selector-mlp / README.md
kevinkyi's picture
Update README.md
9c8e4f0 verified
|
raw
history blame
2.46 kB
---
library_name: pytorch
tags:
- tabular
- pytorch
- classification
- aviation
- wing-design
datasets:
- ecopus/transport-wings-500
license: mit
---
# Wing Selector MLP
This repository contains a PyTorch MLP that scores aircraft-style wings **within the same airfoil** for a chosen objective:
- **min_cd** (minimize drag),
- **max_cl** (maximize lift),
- **max_ld** (maximize lift-to-drag).
It was trained on the dataset **[ecopus/transport-wings-500](https://huggingface.co/datasets/ecopus/transport-wings-500)**.
## Files
- `best.pt` – best checkpoint by validation top-1@group  
- `last.pt` – final checkpoint after training  
- `config.json` – input dim, #airfoils, feature scaler stats  
- `feature_names.json` – expected feature order  
- `airfoil_vocab.json` – airfoil name → id mapping used during training  
- `inference.py` – minimal loader & scoring helper
---
### Model Architecture
The model is a feedforward neural network designed for a binary classification task. It predicts the "best" wing geometry for a given airfoil and aerodynamic objective.
* **Inputs**: The model takes three inputs:
1. **Wing Features**: A vector of 22 continuous features describing the wing's geometry and aerodynamic properties. These features are standardized (mean-centered and scaled by standard deviation) before being fed into the model.
2. **Objective ID**: A one-hot encoded vector representing one of the three possible design objectives.
3. **Airfoil ID**: An embedding vector that learns a representation for each unique airfoil in the training data.
* **Embedding Layer**: An `nn.Embedding` layer converts the discrete airfoil ID into a dense 8-dimensional vector.
* **Hidden Layers**: The core of the network consists of two fully connected hidden layers, each with **128 neurons** and using the **ReLU** activation function.
* **Output Layer**: A final linear layer outputs a single logit, which represents the model's prediction score.
---
### Training Hyperparameters
| Hyperparameter | Value |
| :--- | :--- |
| **Epochs** | 50 |
| **Batch Size** | 64 |
| **Learning Rate** | `2e-3` |
| **Optimizer** | AdamW |
| **LR Scheduler** | CosineAnnealingLR |
| **Loss Function** | BCEWithLogitsLoss |
| **Seed** | 42 |
---
### Final Training Metrics
| Metric | Value |
| :--- | :--- |
| **Validation AUC** | 0.9790 |
| **Validation Avg. Precision**| 0.638 |
| **Validation Top-1 Accuracy**| 50.0% |