Перейти к содержанию

Данные

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+1fitness_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.