Использование как библиотеки¶
Версия 0.1.0 — альфа. Поля ExperimentConfig и внутренние модули могут меняться без deprecation.
Стабильный вход 0.1¶
Импортируйте из пакета, не из файлов скриптов:
from cnn_neat import (
ExperimentConfig,
replace_experiment_config,
run_single_experiment,
run_evolution,
CnnNeat,
)
ExperimentConfig— frozen dataclass; менять только черезreplace_experiment_config/dataclasses.replace.run_single_experiment(cfg)— сборка эволвера, val-loader, цикл поколений. CUDA по умолчанию;device=torch.device("cpu")включает host-only overrides.run_single_experiment(cfg, data=ExternalData(...))— те же мутации, кэш и GD, но входы/цели задаёт вызывающий код (dataset="external"). CIFAR-10 / MNIST безdata=не меняются.run_evolution(...)— низкоуровневый цикл, если эволвер уже собран.- JSON:
python -m cnn_neatиcnn_neat.experiment_io. Тензоры не кладутся в JSON-конфиг.
Произвольные тензоры:
from cnn_neat import ExperimentConfig, ExternalData, run_single_experiment
import torch
val_x = torch.rand(32, 1, 8, 8) # (N, C, H, W) или (N, V, C, H, W)
val_y = torch.rand(32, 1, 4, 4) # цели той же формы, что forward_features
data = ExternalData.from_tensors(val_x, val_y)
cfg = ExperimentConfig(
dataset="external",
task_mode="regression",
fitness_metric="mse",
input_image_size=(8, 8),
output_image_size=(4, 4),
input_channels=1,
population_size=8,
num_generations=2,
)
run_single_experiment(cfg, data=data, device=torch.device("cpu"))
task_mode="binary" / "multiclass" с ExternalData тоже допустим: тогда targets — индексы классов (N,), фитнес как у CIFAR.
Исследовательские подсистемы (конус размножения, кэш Меркла, OVA-merge) импортируются по пути модуля, см. справочник функций.
Пути без рабочей копии репозитория¶
Установленный wheel не содержит pyproject.toml репозитория. Пустые поля конфига заполняются так:
| Env | Назначение | Иначе |
|---|---|---|
CNN_NEAT_REPO_ROOT |
явный clone (Studio/скрипты 06–18) | поиск checkout |
CNN_NEAT_DATA_ROOT |
родитель cifar10/ / mnist/ |
<cwd>/data |
CNN_NEAT_RUNS_ROOT |
артефакты прогонов | <cwd>/runs |
cnn_neat.paths.repo_root() по-прежнему требует checkout — так устроены GUI и ablation-скрипты. Для библиотечного прогона используйте workspace_root() / data_root() / runs_root() (это делает ExperimentConfig).
Дополнительные зависимости¶
pip install cnn-neat ставит torch, numpy, tqdm. Для датасетов нужен [vision] (torchvision). Studio/Lab/bot — отдельные extras; пакет apps.* лежит в wheel, но без PySide6 GUI не запустится.
Чем пакет не является¶
- Нет speciation классического NEAT.
- Фазы 2–7 (GBM, ансамбль, fine-tune 10 классов, сравнение с ResNet) — концепт, в коде Фазы 1 нет.
- Многоклассовый режим (multiclass) — выбор класса по максимуму на концах (tip-argmax) по слитым OVA-чемпионам, не обучаемый softmax на 10 логитов «с нуля».
- Полноценные OVA-кампании 11/15 — скрипты в репозитории, не console entry points пакета.