Данные
6. Данные CIFAR-10¶
Реализация: cnn_neat/cifar10_data.py.
Нормализация (per-channel ImageNet statistics на CIFAR-10):
\[
\tilde{x}_c = \frac{x_c - \mu_c}{\sigma_c}
\]
| Канал | \(\mu_c\) | \(\sigma_c\) |
|---|---|---|
| R | 0.4914 | 0.2470 |
| G | 0.4822 | 0.2435 |
| B | 0.4465 | 0.2616 |
Разбиение данных:
| Подмножество | Размер | Формирование |
|---|---|---|
| Train (CIFAR) | 50 000 | официальный train |
| Val (fitness) | 25 000 | randperm(50000, seed=42)[:25000] → JSON |
| Screen (tiered) | 2 048 | stratified 50/50, seed=cfg.seed+1 → fitness_screen_indices.json |
| Train (refinement) | ~25 000 | оставшиеся 50000 val |
| Test | 10 000 | официальный test CIFAR-10 |
Индексы val фиксируются в data/cifar10/fitness_val_indices.json для воспроизводимости.
DataLoader'ы:
| Loader | Подмножество | Batch size | Shuffle |
|---|---|---|---|
build_val_loader |
val indices | eval_batch_size |
нет |
build_screen_val_loader |
screen indices (tiered) | eval_batch_size |
нет |
build_train_loader |
train val | elite_refinement_train_batch_size |
да |
build_test_loader |
full test (10k) | eval_batch_size |
нет |
num_workers=0, pin_memory=True по умолчанию.
Дисбаланс классов: в one-vs-rest на CIFAR-10 ~10% позитивных (5000 из 50000 → 2500 из 25000 val). Это обосновывает выбор balanced_accuracy как метрики fitness вместо accuracy.