|
|
--- |
|
|
language: en |
|
|
license: mit |
|
|
tags: |
|
|
- image-classification |
|
|
- imagenet |
|
|
- geometric-basin |
|
|
- cantor-coherence |
|
|
- multi-scale |
|
|
- geofractaldavid |
|
|
datasets: |
|
|
- imagenet-1k |
|
|
metrics: |
|
|
- accuracy |
|
|
library_name: pytorch |
|
|
model-index: |
|
|
- name: GeoFractalDavid-Basin-k12 |
|
|
results: |
|
|
- task: |
|
|
type: image-classification |
|
|
dataset: |
|
|
name: ImageNet-1K |
|
|
type: imagenet-1k |
|
|
metrics: |
|
|
- type: accuracy |
|
|
value: 71.40 |
|
|
name: Validation Accuracy |
|
|
--- |
|
|
|
|
|
# GeoFractalDavid-Basin-k12: Geometric Basin Classification |
|
|
|
|
|
**GeoFractalDavid** achieves classification through geometric compatibility rather than cross-entropy. |
|
|
Features must "fit" geometric signatures: k-simplex shapes, Cantor positions, and hierarchical structure. |
|
|
|
|
|
## π― Performance |
|
|
|
|
|
- **Best Validation Accuracy**: 71.40% |
|
|
- **Epoch**: 10/10 |
|
|
- **Training Time**: 18m 45s |
|
|
|
|
|
### Per-Scale Performance |
|
|
- **Scale 384D**: 61.25% |
|
|
- **Scale 512D**: 60.67% |
|
|
- **Scale 768D**: 70.50% |
|
|
- **Scale 1024D**: 51.69% |
|
|
- **Scale 1280D**: 44.72% |
|
|
|
|
|
|
|
|
## ποΈ Architecture |
|
|
|
|
|
**Model Type**: Multi-scale geometric basin classifier |
|
|
|
|
|
**Core Components**: |
|
|
- **Feature Dimension**: 512 |
|
|
- **Number of Classes**: 1000 |
|
|
- **k-Simplex Structure**: k=12 (13 vertices per class) |
|
|
- **Scales**: [384, 512, 768, 1024, 1280] |
|
|
- **Total Simplex Vertices**: 13,000 |
|
|
|
|
|
**Geometric Components**: |
|
|
1. **Feature Similarity**: Cosine similarity to k-simplex centroids |
|
|
2. **Cantor Coherence**: Distance to learned Cantor prototypes (alpha-normalized) |
|
|
3. **Crystal Geometry**: Distance to nearest simplex vertex |
|
|
|
|
|
Each scale learns to weight these components differently. |
|
|
|
|
|
## π¬ Learned Structure |
|
|
|
|
|
### Alpha Convergence (Global Cantor Stairs) |
|
|
|
|
|
The alpha parameter controls middle-interval weighting in the Cantor staircase. |
|
|
|
|
|
- **Initial**: 0.3290 |
|
|
- **Final**: -0.0764 |
|
|
- **Change**: -0.4055 |
|
|
- **Converged to 0.5**: False |
|
|
|
|
|
The Cantor staircase uses soft triadic decomposition with learnable alpha to map |
|
|
features into [0,1] space with fractal structure. |
|
|
|
|
|
### Cantor Prototype Distribution |
|
|
|
|
|
Each class has a learned scalar Cantor prototype. The model pulls features toward |
|
|
their class's Cantor position. |
|
|
|
|
|
**Scale 384D**: |
|
|
- Mean: 0.0226 |
|
|
- Std: 0.0784 |
|
|
- Range: [-0.1377, 0.1894] |
|
|
|
|
|
**Scale 512D**: |
|
|
- Mean: 0.0226 |
|
|
- Std: 0.0784 |
|
|
- Range: [-0.1377, 0.1895] |
|
|
|
|
|
**Scale 768D**: |
|
|
- Mean: 0.0227 |
|
|
- Std: 0.0784 |
|
|
- Range: [-0.1373, 0.1897] |
|
|
|
|
|
**Scale 1024D**: |
|
|
- Mean: 0.0226 |
|
|
- Std: 0.0784 |
|
|
- Range: [-0.1375, 0.1896] |
|
|
|
|
|
**Scale 1280D**: |
|
|
- Mean: 0.0227 |
|
|
- Std: 0.0784 |
|
|
- Range: [-0.1375, 0.1898] |
|
|
|
|
|
|
|
|
Most classes cluster around 0.5 (middle Cantor region), with smooth spread across [0,1]. |
|
|
This creates a continuous manifold rather than discrete bins. |
|
|
|
|
|
### Geometric Weight Evolution |
|
|
|
|
|
Each scale learns optimal weights for combining geometric components: |
|
|
|
|
|
**Scale 384D**: Feature=0.929, Cantor=0.020, Crystal=0.051 |
|
|
**Scale 512D**: Feature=0.885, Cantor=0.023, Crystal=0.092 |
|
|
**Scale 768D**: Feature=0.996, Cantor=0.001, Crystal=0.003 |
|
|
**Scale 1024D**: Feature=0.952, Cantor=0.005, Crystal=0.043 |
|
|
**Scale 1280D**: Feature=0.411, Cantor=0.003, Crystal=0.587 |
|
|
|
|
|
|
|
|
**Pattern**: Lower scales rely on feature similarity, higher scales use crystal geometry. |
|
|
This hierarchical strategy emerges from training. |
|
|
|
|
|
## π» Usage |
|
|
|
|
|
```python |
|
|
import torch |
|
|
from safetensors.torch import load_file |
|
|
from geovocab2.train.model.core.geo_fractal_david import GeoFractalDavid |
|
|
|
|
|
# Load model |
|
|
model = GeoFractalDavid( |
|
|
feature_dim=512, |
|
|
num_classes=1000, |
|
|
k=5, |
|
|
scales=[256, 384, 512, 768, 1024, 1280], |
|
|
alpha_init=0.5, |
|
|
tau=0.25 |
|
|
) |
|
|
|
|
|
state_dict = load_file("weights/.../best_model_acc{best_acc:.2f}.safetensors") |
|
|
model.load_state_dict(state_dict) |
|
|
model.eval() |
|
|
|
|
|
# Inference |
|
|
with torch.no_grad(): |
|
|
logits = model(features) # [batch_size, 1000] |
|
|
predictions = logits.argmax(dim=-1) |
|
|
|
|
|
# Inspect learned structure |
|
|
print(f"Global Alpha: {{model.cantor_stairs.alpha.item():.4f}}") |
|
|
geo_weights = model.get_geometric_weights() |
|
|
cantor_dist = model.get_cantor_interval_distribution(sample_features) |
|
|
``` |
|
|
|
|
|
## π Training Details |
|
|
|
|
|
**Loss Function**: Contrastive Geometric Basin |
|
|
- Primary: Maximize correct class compatibility, minimize incorrect |
|
|
- Regularization: Cantor coherence, separation, discretization |
|
|
|
|
|
**Optimization**: |
|
|
- Optimizer: AdamW with separate learning rates |
|
|
- Scales: {config.learning_rate} |
|
|
- Fusion weights: {config.learning_rate * 0.5} |
|
|
- Cantor stairs: {config.learning_rate * 0.1} |
|
|
- Weight decay: {config.weight_decay} |
|
|
- Gradient clipping: {config.gradient_clip} |
|
|
- Scheduler: {config.scheduler_type} |
|
|
|
|
|
**Data**: |
|
|
- Dataset: ImageNet-1K CLIP features ({config.model_variant}) |
|
|
- Batch size: {config.batch_size} |
|
|
- Training samples: 1,281,167 |
|
|
- Validation samples: 50,000 |
|
|
|
|
|
**Hub Upload**: {"Periodic (every " + str(config.hub_upload_interval) + " epochs)" if config.hub_upload_interval > 0 else "End of training only"} |
|
|
|
|
|
## π Key Innovation |
|
|
|
|
|
**No Cross-Entropy on Arbitrary Weights** |
|
|
|
|
|
Traditional: `cross_entropy(W @ features + b, labels)` |
|
|
- W and b are arbitrary learned parameters |
|
|
|
|
|
**Geometric Basin**: `contrastive_loss(compatibility_scores, labels)` |
|
|
- Compatibility from geometric structure: |
|
|
- Feature β Simplex centroid similarity |
|
|
- Feature β Cantor prototype coherence |
|
|
- Feature β Simplex vertex distance |
|
|
- Cross-entropy applied to geometrically meaningful scores |
|
|
- Structure enforced through geometric regularization |
|
|
|
|
|
Result: Classification emerges from geometric organization, not arbitrary mappings. |
|
|
|
|
|
## π Visualizations |
|
|
|
|
|
The repository includes visualizations of learned structure: |
|
|
- Cantor prototype distributions (histograms per scale) |
|
|
- Sorted prototype curves (showing smooth manifold) |
|
|
- Cross-scale analysis (mean, variance, geometric weights) |
|
|
|
|
|
See `weights/{model_name}/{config.run_id}/` for generated plots. |
|
|
|
|
|
## π Repository Structure |
|
|
|
|
|
``` |
|
|
weights/{model_name}/{config.run_id}/ |
|
|
βββ best_model_acc{best_acc:.2f}.safetensors # Model weights |
|
|
βββ best_model_acc{best_acc:.2f}_metadata.json # Training metadata |
|
|
βββ train_config.json # Training configuration |
|
|
βββ training_history.json # Epoch-by-epoch history |
|
|
βββ cantor_prototypes_distribution.png # Histogram analysis |
|
|
βββ cantor_prototypes_sorted.png # Sorted manifold view |
|
|
βββ cantor_prototypes_cross_scale.png # Cross-scale comparison |
|
|
|
|
|
runs/{model_name}/{config.run_id}/ |
|
|
βββ events.out.tfevents.* # TensorBoard logs |
|
|
``` |
|
|
|
|
|
**Note**: Visualizations (*.png) are generated by running the probe script and should be |
|
|
copied to the weights directory before uploading to Hub. |
|
|
|
|
|
## π¬ Research |
|
|
|
|
|
This architecture demonstrates: |
|
|
1. **Rapid learning** (70%+ after 1 epoch, comparable to FractalDavid) |
|
|
2. **Geometric organization** (classes spread smoothly in Cantor space) |
|
|
3. **Hierarchical strategy** (scales learn different geometric weightings) |
|
|
4. **Emergent structure** (alpha stays near 0.5, prototypes cluster naturally) |
|
|
|
|
|
The geometric constraints guide learning toward structured representations |
|
|
without explicit supervision of the geometric components. |
|
|
|
|
|
## π Citation |
|
|
|
|
|
```bibtex |
|
|
@software{{geofractaldavid2025, |
|
|
title = {{GeoFractalDavid: Geometric Basin Classification}}, |
|
|
author = {{AbstractPhil}}, |
|
|
year = {{2025}}, |
|
|
url = {{https://huggingface.co/{config.hf_repo if config.hf_repo else 'MODEL_REPO'}}}, |
|
|
note = {{Multi-scale geometric basin classifier with k-simplex structure}} |
|
|
}} |
|
|
``` |
|
|
|
|
|
## π License |
|
|
|
|
|
MIT License - See LICENSE file for details. |
|
|
|
|
|
--- |
|
|
|
|
|
*Model trained on {datetime.now().strftime('%Y-%m-%d')}* |
|
|
*Run ID: {config.run_id}* |
|
|
|